阻止表单被重复提交(改)
时间:2007-08-03
来源:互联网
回家后修改了一下程序,请各位继续指正
PHP代码:
<?php
session_start();
/**
* 检查表单是否被重复提交
* 相同内容的表单在设定时间内只能提交1次
* @param int $iTimeOffset
* @return bool
*/
function checkFormSubmit($iTimeOffset=60){
// 取得表单的标识
$idForm = md5(serialize($_POST));
// 是否需要表单提交检察
$iFormCheck = true;
if (isset($_SESSION['formSubmitCheck'])){
// 删除过期的表单标识
foreach (array_keys($_SESSION['formSubmitCheck']) as $val){
if (time() > $val){
unset($_SESSION['formSubmitCheck'][$val]);
}
}
}else {
$_SESSION['formSubmitCheck'] = array();
$iFormCheck = false;
}
if ($iFormCheck == true){
// 检查是否有重复标识的提交记录
foreach ($_SESSION['formSubmitCheck'] as $val){
if ($val == $idForm){
return false;
}
}
}
// 保存表单标识
$_SESSION['formSubmitCheck'][(time()+$iTimeOffset)] = $idForm;
return true;
}
if (count($_POST) > 0){
if (checkFormSubmit()===true){
echo '表单提交成功';
}else {
echo '表单重复提交';
}
}
?>
<form method="POST">
<input type="text" name="a">
<input type="text" name="b">
<textarea name="c"></textarea>
<input type="submit" name="btnSubmit" value="确认">
</form>
<?php
var_dump($_POST);
var_dump($_SESSION);
?>
作者: paged 发布时间: 2007-08-02
作者: yiqing666 发布时间: 2007-08-02
作者: laopi 发布时间: 2007-08-07
作者: caiyuerui 发布时间: 2007-08-15
表单重复提交的问题
你可以用JS 来控制 submit
当submit 的时候就把 submit 按扭变无效.那么就可以了实现这个了
没必要用session服务器端检测.:lol
作者: 逆雪寒 发布时间: 2007-08-20

作者: phpip 发布时间: 2007-08-20
引用:
原帖由 逆雪寒 于 2007-8-20 09:36 发表没必要这样弄
表单重复提交的问题
你可以用JS 来控制 submit
当submit 的时候就把 submit 按扭变无效.那么就可以了实现这个了
没必要用session服务器端检测.:lol
作者: xiaojia 发布时间: 2007-08-24
那用户点击刷新按钮时 不是还是重复提交
作者: saturnine 发布时间: 2007-08-25
作者: 逆雪寒 发布时间: 2007-08-25
作者: DCD 发布时间: 2007-08-28
那么你可以在 你的FROM 表单里面 做一个随机数,对不上这个数的就算POST 过去了.也不对数据起任何作用.
详细请参考DZ 论坛写法:)
作者: 逆雪寒 发布时间: 2007-08-28
作者: sonnzy 发布时间: 2008-06-24
作者: flanksheng 发布时间: 2008-06-24
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28