1 if(isset($_POST['go'])){setcookie("tempcookie","",time()+30); 2 header("Location:".$_SERVER[PHP_SELF]);exit(); 3 } if(isset($_COOKIE["tempcookie"])){ 4 setcookie("tempcookie","",0);echo "您已经提交过表单"; 5 } 6 7 8 /*利用PHP的Session功能,也能避免PHP表单重复提交。Session保存在服务器端,在PHP运行过程中可以改变Session变量,下次访问这个变量时,得到的是新赋的值,所以,可以用一个Session变量记录表单提交的值,如果不匹配,则认为是用户在重复提交 9 */ 10 11 session_start();//根据当前SESSION生成随机数 12 $code = mt_rand(0,1000000); 13 $_SESSION['code'] = $code; 14 15 //在表单中隐藏传递: 16 < input type="hidden" name="originator" value="< ?=$code?>"> 17 18 //在接收页代码如下: 19 20 session_start(); 21 if(isset($_POST['originator'])) { 22 if($_POST['originator'] == 23 $_SESSION['code']){ 24 // 处理该表单的语句,省略 25 }else{ 26 echo ‘请不要刷新本页面或 27 重复提交表单!’; 28 } 29 }
如果客户端禁止了Cookie,该方法将不起任何作用,这点请注意
还可以用header重定向到一个新页也可以解决,这里主要是研究cookies或session的防止重复提交的方法