php 表单令牌防止重复提交原理

例子,session方法

 代码如下 复制代码

<?php
if($_POST){
    if($_SESSION["token"]!=$_POST["token"]){
        die("非法提交!");
    }else{
        echo "安全提交!";
    }
}
$_SESSION["token"]=md5(rand(1,999));//没生成一次表单,修改一次值,不要在post处理前修改它,不然无法比对 www.111cn.net
?>
<form action="1.php" method="post">
<input type="hidden" value="<?php echo $_SESSION["token"]?>" name="token">
<input type="submit" value="提交" />
</form>

例子,cookie+md5方法

 代码如下 复制代码

<?php

$value = $_COOKIE[“value”]; //读取上一次设置的Cookie值

if(count($_POST)) {

$long = “”;

while(list($key,$value)=each($_POST))$long.=$value;

$hash = md5($long);

setcookie(“value”,$hash,time()+60*60); //重新设置cookie

}

if($value!=$hash) {

// 如果两次的MD5值不一样就对数据进行进一步操作

} else {

//如果两次MD5的值相同,告知用户提交失败 ,为重复提交表单

}

?>

 

时间: 2024-09-29 03:59:53

php 表单令牌防止重复提交原理的相关文章

jquery提交form表单时禁止重复提交的方法

 这篇文章主要介绍了jquery提交form表单时禁止重复提交的方法,需要的朋友可以参考下    代码如下: $(document).ready(function() {   $('form').submit(function() {     if(typeof jQuery.data(this, "disabledOnSubmit") == 'undefined') {       jQuery.data(this, "disabledOnSubmit", { s

jquery提交form表单时禁止重复提交的方法_jquery

复制代码 代码如下: $(document).ready(function() {  $('form').submit(function() {    if(typeof jQuery.data(this, "disabledOnSubmit") == 'undefined') {      jQuery.data(this, "disabledOnSubmit", { submited: true });      $('input[type=submit], i

如何避免表单的重复提交原理详解

这个技巧的主要原理是不允许用户回退后再次提交,也就是说回退后修改再提交也是不允许的,而且也不能避免Ctrl-C/Ctrl-V的灌水办法.究竟有没有用,还是看各位站长的喜好了 你是否遇到过"重复提交"的问题?要解决这个问题其实并不难.这里有一个简单的方法避免同一表单的重复提交. 首先,我们可以定义一个session变量用来保存一个表单的提交序列号.这里我定义为"$userLastAction".然后在表单里加入一个hidden变量,把值设为$userLastActio

ThinkPHP下表单令牌错误与解决方法分析

本文实例讲述了ThinkPHP下表单令牌错误与解决方法.分享给大家供大家参考,具体如下: 在项目的开发过程中,添加.编辑数据时偶尔会遇到系统提示的"表单令牌错误",一开始没怎么在意,直到今天下午QA把此问题提到bug系统了,正好时间也有空余,就追着TP3.13的源码看了下去,几分钟后,便知道原委了. 在项目中开启表单令牌,通常要在配置文件中做如下配置 // 是否开启令牌验证 'TOKEN_ON' => true, // 令牌验证的表单隐藏字段名称 'TOKEN_NAME' =&g

网页-表单自动填写内容提交

问题描述 表单自动填写内容提交 每天更新数据到mysql上.然后登陆网站,从数据库里面查找相关填表内容,然后自动填写进打开的网页表单内,自动点击提交,这个web网页 是别人的 解决方案 web automation的方式点击表格提交 解决方案二: 还可以浏览器插件,插入javascript来操作web页面 解决方案三: 下载httpanalyzerstd工具截取别人网站的提交动作的数据包,然后分析数据包格式构造,具体怎么操作自行百度,然后用使用http协议post方法提交,只要你数据包构造正确,

编辑器-form表单通过360浏览器提交数据,controller获取不到参数

问题描述 form表单通过360浏览器提交数据,controller获取不到参数 我做了一个小DEMO,进行新闻的CRUD,用的是ueditor,测试的时候,IE可以显示数据, 火狐也可以,chrome也行,但是有时候点击"编辑新闻"时,编辑器里是空白,时有时无, 360浏览器就一直是空白,我看了一下MyEclipse控制台,是因为没获取页面提交的数据. 希望求大神解决啊!!! 解决方案 360你使用的是兼容模式还是急速模式?兼容模式是ie内核(默认好像是ie7内核..并不是系统最高版

jsp使用ajax加载子页面,使用ajax提交子页面的表单没反应,提交按钮点击不了

问题描述 jsp使用ajax加载子页面,使用ajax提交子页面的表单没反应,提交按钮点击不了 子页面相关js代码如下: $(function(){ $("#chaxun_btn").click(function(){ var rightitem=$("#chaxun_btn").parent("right-item"); var url=$("#chaxun_btn").attr("url"); $.aja

jqury 表单验证,终止提交

问题描述 jqury 表单验证,终止提交 我想要做的是当弹出'项目类型已存在'时return false,不弹出时return true,怎么实现 form action="saveModuleType.jhtml" method="post" class="typeForm" onsubmit="return validate()" function validate(){ var tmoduleType = $('#smo

jQuery form插件之formDdata参数校验表单及验证后提交_jquery

Form Plugin API 里提供了很多有用的方法可以让你轻松的处理表单里的数据和表单的提交过程. 测试环境:部署到Tomcat中的web项目. 一.引入依赖js <script src="jquery-1.3.1.js" type="text/javascript"></script> <script src="jquery.form.js" type="text/javascript"&g