码迷,mamicode.com
首页 > Web开发 > 详细

PHP 防止表单重复提交

时间:2015-02-28 21:32:12      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:

原理是:首先在表单页生成一个 随机不重复的 token(可以利用时间戳),把 token 的值分别存入 session 和 表单的隐藏域;当提交表单的时候,在接收页对比传递过来的 token 和session 中的 token ,当两者相等时,重新生成一个 token 并存入 session。此时如果重复提交表单,则必然session 中新的 token 值不等于 post 来的 token。

代码:

表单页 post.php

 1 session_start();  
 2 
 3 $token = md5(microtime(true));
 4 $_SESSION[‘token‘] = $token;
 5 
 6 ?>  
 7 <form method=‘post‘ action=‘post2.php‘>  
 8     <input type="text" name="token" value="<?php echo $token;?>">  
 9     <input type="text" name="test" value="value<?php echo mt_rand(1,9999);?>">  
10     <input type="submit">  
11 </form>

接收页 post2.php

 1 <?php
 2 session_start();
 3 if(isset($_SESSION[‘token‘])){
 4     $token = $_SESSION[‘token‘];
 5 }else{
 6     $token = ‘‘;
 7 }
 8 if(isset($_POST[‘test‘])){  
 9     if($_POST[‘token‘] != $token){  
10         echo ‘重复提交 <br />‘;  
11     }else{  
12         echo ‘success‘;  
13         $token = md5(microtime(true));
14         $_SESSION[‘token‘] = $token;
15     }  
16 }

 

PHP 防止表单重复提交

标签:

原文地址:http://www.cnblogs.com/dee0912/p/4306168.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!