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的防止重复提交的方法