表单令牌阻止数据重复提交
在session中存放一个特殊标志
在服务器端,生成一个唯一的标识符,将它存入session,同时将它写入表单的隐藏字段中,然后将表单页面发给浏览器,用户录入信息后点击提交,在服务器端,获取表单中隐藏字段的值,与session中的唯一标识符比较,相等说明是首次提交,就处理本次请求,然后将session中的唯一标识符移除;不相等说明是重复提交,就不再处理。
这使你的web应用有了更高级的XSRF保护。
请见如下代码:
1 <?php 2 session_start(); 3 //根据当前SESSION生成随机数 4 $code = sha1(mt_rand(0,1000000)); 5 $_SESSION['code'] = $code; 6 ?> 7 //在页面表单上将随机数作为隐藏值进行传递,代码如下: 8 <input type="hidden" name="originator" value="<?=$code?>"> 9 10 //在接收页面的PHP代码如下: 11 12 <?php 13 session_start(); 14 if(isset($_POST['originator'])) { 15 if($_POST['originator'] == $_SESSION['code']){ 16 // 处理该表单的语句,省略 17 }else{ 18 echo ‘请不要刷新本页面或重复提交表单!’; 19 } 20 } 21 ?>
转载于:https://www.cnblogs.com/walblog/articles/7985985.html
表单令牌阻止数据重复提交相关推荐
- php如何防止重复提交表单,如何防止php重复提交表单方法
解读:Token一般用在两个地方--防止表单重复提交.anti csrf攻击(跨站点请求伪造). Token,就是令牌,最大的特点就是随机性,不可预测.两者在原理上都是通过session token来 ...
- 微信h5页面提交表单后返回键重复提交的问题
微信h5页面提交表单后返回键重复提交的问题 问题描述:h5表单提交保存成功之后,手机返回后原来的页面还能提交表单. 示例: mui.post('savexxxx',data,function(res) ...
- java mvc中重复提交表单,spring mvc 防止重复提交表单的两种方法,推荐第二种
第一种方法:判断session中保存的token 比较麻烦,每次在提交表单时都必须传入上次的token.而且当一个页面使用ajax时,多个表单提交就会有问题. 注解Token代码: package c ...
- asp.net接受表单验证格式后再提交数据_如何解析 el-form-renderer 表单渲染器1.14.0...
DEEPEXI 大前端 常人道,一入开发深似海,技术学习无止境.在新技术层出不穷的前端开发领域,有一群身怀绝技的开发,他们在钻研前沿技术的同时,也不忘分享他们的成果,回馈社区.下面,就由小水滴带大家看 ...
- asp.net接受表单验证格式后再提交数据_看滴普科技大前端如何玩转el-form-renderer 表单渲染器1.14.0
DEEPEXI 大前端 常人道,一入开发深似海,技术学习无止境.在新技术层出不穷的前端开发领域,有一群身怀绝技的开发,他们在钻研前沿技术的同时,也不忘分享他们的成果,回馈社区.下面,就由小水滴带大家看 ...
- jquery表单ajax json数据,jquery序列化form表单使用ajax提交后处理返回的json数据
1.返回json字符串: /** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try ...
- 微信小程序表单提交php存储,微信小程序实现form表单本地储存数据
本文实例为大家分享了微信小程序实现form表单本地储存数据的具体代码,供大家参考,具体内容如下 效果图: 主要利用小程序的getStorage来实现异步本地储存. 小程序目录结构如下: 新建项目前,为 ...
- php post可重复提交了,如何防止 POST 数据重复提交!
如题,在不使用验证码的情况下! 回复内容: 如题,在不使用验证码的情况下! 所有"通过前台JS,约束提交行为本身不会重复发生"的答案都是彻底错误的. 弱网络时如果POST请求到达了 ...
- thinkPHP5.0表单令牌使用
表单令牌的作用:避免表单的重复提交(如在tp5提交成功等待跳转页面刷新页面会在次提交表单) 原理:在初始化表单时,生成一个session标识'token',提交表单时将这个token一起提交过去,然后 ...
最新文章
- 如何使用其他文件中定义的类Python
- K8S 1.9.0二进制包部署(五)
- c# 线程间操作无效: 从不是创建控件“”的线程访问它,用托管来解决
- songCMS 3.15 cookie SQLINJ
- ARM硬件支持java技术Jazelle DBX
- webpack整体了解
- 01-windows下Elasticsearch安装
- 【Spring】HttpMessageConverter的作用及替换
- npm安装为什么要安装gyp各种报错呢
- extern 关键字详解
- 小米路由器 一直常亮黄灯 修复方法
- 西门子g120变频器接线图_西门子G120变频器使用小的注意事项!!!
- 写在博客文章后,关于为什么要写博客,特此提醒自己。
- 人工智能数学基础9:集合相关概念
- 51单片机指令系统详解
- zz 超级拖拉机 4.02 破解算法分析
- 中物院计划建国内一流科学仪器研发基地
- python中true什么意思_python中的bool是什么意思
- 蚁群算法一个VRP小实现
- warmup_csaw_2016
热门文章
- asp网页提升速度方法5则_asp技巧
- Redis 6.0 新特性,多线程连环 13 问!
- 站在吃货的角度来解释那些和微服务有关的名词
- 使用Nomad构建弹性基础架构:重新启动任务
- 什么是Scanner?next()和hasNext() ? nextLine()和hasNextLine()?
- Python 字典类型的使用
- top,right,bottom,left设置为0有什么用?
- 压缩文件拷到服务器损坏,压缩文件导致无法拷贝共享
- 属兔的人今日运势-360星座网_【生肖运势】12月17日
- linux模糊查找子目录,linux怎么模糊查找一个文件