您好,欢迎访问一九零五行业门户网

PHP利用session与cookies防重复提交实例_PHP教程

在网页开发中防止重复提交是一个比较实用并且也常用碰到的问题了,除了我们可以直接在数据库查询用户是否提交相同数据进行过滤外,我们还可以在用户提交数据时就防止这类事情发现,下面我来介绍基于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; 
    } 
    ?>
防表单重复提交
 代码如下 复制代码
name:
email:
beer:
warthog     
         guinness     
         stuttgarter schwabenbr
例,一个基于smarty演示版
 代码如下 复制代码
$code = mt_rand(0,1000000);
setcookie('addtips',$code,time()+300);
if(isset($_post['submit']) ){    
if($_cookie['addtips']!= $_post['code']){            
  echo 请不要刷新本页面或重复提交表单;
exit();
}
}
$smarty->assign('code',$code);
10./////防止表单重复提交
在tpl模板中
代码如下 复制代码
1.
/*利用php的session功能,也能避免php表单重复提交。session保存在服务器端,在php运行过程中可以改变session变量,下次访问这个变量时,得到的是新赋的值,所以,可以用一个session变量记录表单提交的值,如果不匹配,则认为是用户在重复提交
*/
session_start();//根据当前session生成随机数  
  $code = mt_rand(0,1000000);  
   $_session['code'] = $code;  
//在表单中隐藏传递:
   >
//在接收页代码如下:
session_start();  
  if(isset($_post['originator'])) {  
   if($_post['originator'] ==
   $_session['code']){  
   // 处理该表单的语句,省略  
  }else{  
   echo ‘请不要刷新本页面或
   重复提交表单!’;  
  }  
  }
http://www.bkjia.com/phpjc/633153.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/633153.htmltecharticle在网页开发中防止重复提交是一个比较实用并且也常用碰到的问题了,除了我们可以直接在数据库查询用户是否提交相同数据进行过滤外,...
其它类似信息

推荐信息