PHP 防止表单重复提交
2024-08-27 00:00:26
原理是:首先在表单页生成一个 随机不重复的 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;
}
}
最新文章
- 使用github page 页面建博客中遇到的几个小问题
- javaWeb实现文件上传与下载 (转)
- LeetCode Burst Balloons
- 利用js排序html表格
- web配置详解
- 从hello-world 开始 <;contiki学习之四>;
- 使用Asp.Net MVC开发兼职文章系统
- c# tolist() 浅析
- 剑指Offer——小米+小红书笔试题+知识点总结
- 2018-11-04 在线代码离线翻译Chrome插件";一马";v0.0.14
- Injection的简单辨析
- golang 写日志到syslog
- IDEA搭建SSM实现登录、注册,数据增删改查功能
- 使用config 来管理ssh的会话
- python *args,**kwargs用法
- Android四种Activity的加载模式
- dataframe转换为多维矩阵,然后可以使用values来实现
- 不同Linux机器之间拷贝文件
- 【转】java与.net比较学习系列(3) 基本数据类型和类型转换
- sql 表字段模糊连接
热门文章
- mysql修改表的存储引擎(myisam<;=>;innodb)
- 如何使用Linux的Crontab定时执行PHP脚本的方法
- CSS优化技巧
- poj 2236 并查集
- python 出入任意多个参数
- HTML-Canvas02
- Xamarin提示Build-tools版本过老
- c# 模拟 网页实现12306登陆、自动刷票、自动抢票完全篇
- 贪心/字符串处理 Codeforces Round #291 (Div. 2) A. Chewbaсca and Number
- POJ3493 Largest Submatrix of All 1’s(单调栈)