PHP 防止表单重复提交
原理是:首先在表单页生成一个 随机不重复的 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;
}
}
PHP 防止表单重复提交的更多相关文章
- 12、Struts2表单重复提交
什么是表单重复提交 表单的重复提交: 若刷新表单页面, 再提交表单不算重复提交. 在不刷新表单页面的前提下: 多次点击提交按钮 已经提交成功, 按 "回退" 之后, 再点击 &qu ...
- java防止表单重复提交
用session防止表单重复提交 思路:在服务器端生成一个唯一的随机标识串Token,同时在当前用户的Session域中保存这个Token.然后将Token发送到客户端的Form表单中,在Form表单 ...
- java web学习总结(十三) -------------------使用Session防止表单重复提交
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
- 使用Struts 2防止表单重复提交
用户重复提交表单在某些场合将会造成非常严重的后果.例如,在使用信用卡进行在线支付的时候,如果服务器的响应速度太慢,用户有可能会多次点击提交按钮,而这可能导致那张信用卡上的金额被消费了多次.因此,重复提 ...
- js阻止form表单重复提交
防止表单重复提交的方法总体来说有两种,一种是在js中阻止重复提交:另一种是在后台利用token令牌实现,大致思路是生成一个随机码放到session和form表单的隐藏输入框中,提交表单时两者对比,表单 ...
- PHP简单利用token防止表单重复提交
<?php /* * PHP简单利用token防止表单重复提交 * 此处理方法纯粹是为了给初学者参考 */ session_start(); function set_token() { $_S ...
- token防止表单重复提交
出现表单重复提交的三种情况: 一.服务器响应缓慢,用户多次点击提交按钮. 二.提交成功后刷新页面. 三.提交成功后返回表单页面再次点击提交. package com.jalja.token; impo ...
- JavaWeb防止表单重复提交(转载)
转载自:http://blog.csdn.net/ye1992/article/details/42873219 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用 ...
- JavaWeb---总结(十三)使用Session防止表单重复提交
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
- Struts2防止表单重复提交
1.说明 系统拦截器的应用. 表单重复提交:当使用请求转化进行跳转的时候,存在着表单重复提交的问题. 2.在表单中加入s:token 如果页面加入了struts2的标签,页面的请求必须进入struts ...
随机推荐
- 玩转Chrome workplace
简介 相信大家都知道Chrome Develop Tools中的workplace,这使得我们能够让本地的文件夹在Source面板下可以编辑.没错,这使得chrome同样可以成为我们可选的编辑器之一, ...
- Servlet获取参数
package action; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Servlet ...
- WCF测试客户端的使用
进入vs安装目录下,C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE,找到WcfTestClient.exe程序,点击文件 ...
- [译]SQL Server 之 查询计划缓存和重编译
查询优化是一个复杂而且耗时的操作,所以SQL Server需要重用现有的查询计划.查询计划的缓存和重用在多数情况下是有益的的,但是在某些特殊的情况下,重编译一个查询计划可能能够改善性能. SELECT ...
- wp8 入门到精通 线程
Dispatcher.BeginInvoke(() => MessageBox.Show(String.Format("A push notification {0} error oc ...
- Wcf for wp8 使用iis Express 承载Wcf服务部署发布网站(三)
我们接下来要做的是 本地电脑当作服务器(模拟外网服务器)来承载Wcf服务程序,通过引用本地电脑ip地址访问wcf服务程序接口 http://192.168.1.123/Service1.svc 一.先 ...
- poj 2195 二分图带权匹配+最小费用最大流
题意:有一个矩阵,某些格有人,某些格有房子,每个人可以上下左右移动,问给每个人进一个房子,所有人需要走的距离之和最小是多少. 貌似以前见过很多这样类似的题,都不会,现在知道是用KM算法做了 KM算法目 ...
- SVN学习安装总结
前言: 第一次接触SVN的时候并不是自己学习SVN的时候,而是再看师哥师姐做项目的时候,看着他们打开SVN向上传东西的时候,我就在想,这是个什么东西,需要每个人都安装吗?大胆的我也就问了 ...
- dp核心问题研究-从入门到放弃
首先从数字三角形开始 这个题的特点是..本身遍历次序就是个树型的 每次的决策都已经给定,左下或者右下 并且当我们纠结于是往左下走还是往右下走的时候,每次根据当前的情况贪心都为时尚早,因为后面的数据可以 ...
- error opening trace file: No such file or directory (2) ,can't load transform_config.xml
出现这个错误:error opening trace file: No such file or directory (2) ,can't load transform_config.xml 是因为没 ...