作者:淑敏小朋友 | 来源:互联网 | 2018-03-22 07:16
在网页开发中防止重复提交是一个比较实用并且也常用碰到的问题了,除了我们可以直接在数据库查询用户是否提交相同数据进行过滤外,我们还可以在用户提交数据时就防止这类事情发现,下面我来介绍基于sessi...
在网页开发中防止重复提交是一个比较实用并且也常用碰到的问题了,除了我们可以直接在数据库查询用户是否提交相同数据进行过滤外,我们还可以在用户提交数据时就防止这类事情发现,下面我来介绍基于session与COOKIEs防重复提交一些基于实现方法。
防止刷新或再交提交
所以就考虑增加一个参数来防止这类情况的发生,COOKIE和SESSION可供选择,不过 COOKIE是客户端的,如果人家禁用COOKIE的话,照样可以恶意刷新点击数。还是用SESSION的好,IP+URL参数的MD5值做 SESSION名
实现原理 设置 max_reloadtime =100; //设置页面刷新最长间隔时间
用户第一次打开页面 记录当前的时间保存在 session_start
用户第二次打开页面(判断 session_start是否存在) 用当前时间和 session_start 相减 得到差值 time_passed
当 time_passed $allowTime) {
$refresh = true;
$_SESSION[$allowT] = time();
} else {
$refresh = false;
}
?>
防表单重复提交
';
print_r($_POST);
print 'Please try again';
print '
';
$_SESSION['num'] = 500;
} else {
print '';
print_r($_POST);
echo "However you have submitted";
print '
';
}
} else {
session_start() or die("session is not started");
$_SESSION['num'] = 400;
?>
" method="POST">
Name:
Email:
Beer:
例,一个基于smarty演示版
assign('code', $code);
?>
10./////防止表单重复提交
在tpl模板中
1.
" >
//在接收页代码如下:
session_start();
if (isset($_POST['originator'])) {
if ($_POST['originator'] == $_SESSION['code']) {
// 处理该表单的语句,省略
} else {
echo '请不要刷新本页面或
重复提交表单!';
}
}
?>
永久链接:
转载随意!带上文章地址吧。