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

代码:

表单页 post.php

 session_start();  

 $token = md5(microtime(true));
$_SESSION['token'] = $token; ?>
<form method='post' action='post2.php'>
<input type="text" name="token" value="<?php echo $token;?>">
<input type="text" name="test" value="value<?php echo mt_rand(1,9999);?>">
<input type="submit">
</form>

接收页 post2.php

 <?php
session_start();
if(isset($_SESSION['token'])){
$token = $_SESSION['token'];
}else{
$token = '';
}
if(isset($_POST['test'])){
if($_POST['token'] != $token){
echo '重复提交 <br />';
}else{
echo 'success';
$token = md5(microtime(true));
$_SESSION['token'] = $token;
}
}

最新文章

  1. 使用github page 页面建博客中遇到的几个小问题
  2. javaWeb实现文件上传与下载 (转)
  3. LeetCode Burst Balloons
  4. 利用js排序html表格
  5. web配置详解
  6. 从hello-world 开始 &lt;contiki学习之四&gt;
  7. 使用Asp.Net MVC开发兼职文章系统
  8. c# tolist() 浅析
  9. 剑指Offer——小米+小红书笔试题+知识点总结
  10. 2018-11-04 在线代码离线翻译Chrome插件&quot;一马&quot;v0.0.14
  11. Injection的简单辨析
  12. golang 写日志到syslog
  13. IDEA搭建SSM实现登录、注册,数据增删改查功能
  14. 使用config 来管理ssh的会话
  15. python *args,**kwargs用法
  16. Android四种Activity的加载模式
  17. dataframe转换为多维矩阵,然后可以使用values来实现
  18. 不同Linux机器之间拷贝文件
  19. 【转】java与.net比较学习系列(3) 基本数据类型和类型转换
  20. sql 表字段模糊连接

热门文章

  1. mysql修改表的存储引擎(myisam&lt;=&gt;innodb)
  2. 如何使用Linux的Crontab定时执行PHP脚本的方法
  3. CSS优化技巧
  4. poj 2236 并查集
  5. python 出入任意多个参数
  6. HTML-Canvas02
  7. Xamarin提示Build-tools版本过老
  8. c# 模拟 网页实现12306登陆、自动刷票、自动抢票完全篇
  9. 贪心/字符串处理 Codeforces Round #291 (Div. 2) A. Chewbaсca and Number
  10. POJ3493 Largest Submatrix of All 1’s(单调栈)