在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

表单令牌阻止数据重复提交相关推荐

  1. php如何防止重复提交表单,如何防止php重复提交表单方法

    解读:Token一般用在两个地方--防止表单重复提交.anti csrf攻击(跨站点请求伪造). Token,就是令牌,最大的特点就是随机性,不可预测.两者在原理上都是通过session token来 ...

  2. 微信h5页面提交表单后返回键重复提交的问题

    微信h5页面提交表单后返回键重复提交的问题 问题描述:h5表单提交保存成功之后,手机返回后原来的页面还能提交表单. 示例: mui.post('savexxxx',data,function(res) ...

  3. java mvc中重复提交表单,spring mvc 防止重复提交表单的两种方法,推荐第二种

    第一种方法:判断session中保存的token 比较麻烦,每次在提交表单时都必须传入上次的token.而且当一个页面使用ajax时,多个表单提交就会有问题. 注解Token代码: package c ...

  4. asp.net接受表单验证格式后再提交数据_如何解析 el-form-renderer 表单渲染器1.14.0...

    DEEPEXI 大前端 常人道,一入开发深似海,技术学习无止境.在新技术层出不穷的前端开发领域,有一群身怀绝技的开发,他们在钻研前沿技术的同时,也不忘分享他们的成果,回馈社区.下面,就由小水滴带大家看 ...

  5. asp.net接受表单验证格式后再提交数据_看滴普科技大前端如何玩转el-form-renderer 表单渲染器1.14.0

    DEEPEXI 大前端 常人道,一入开发深似海,技术学习无止境.在新技术层出不穷的前端开发领域,有一群身怀绝技的开发,他们在钻研前沿技术的同时,也不忘分享他们的成果,回馈社区.下面,就由小水滴带大家看 ...

  6. jquery表单ajax json数据,jquery序列化form表单使用ajax提交后处理返回的json数据

    1.返回json字符串: /** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try ...

  7. 微信小程序表单提交php存储,微信小程序实现form表单本地储存数据

    本文实例为大家分享了微信小程序实现form表单本地储存数据的具体代码,供大家参考,具体内容如下 效果图: 主要利用小程序的getStorage来实现异步本地储存. 小程序目录结构如下: 新建项目前,为 ...

  8. php post可重复提交了,如何防止 POST 数据重复提交!

    如题,在不使用验证码的情况下! 回复内容: 如题,在不使用验证码的情况下! 所有"通过前台JS,约束提交行为本身不会重复发生"的答案都是彻底错误的. 弱网络时如果POST请求到达了 ...

  9. thinkPHP5.0表单令牌使用

    表单令牌的作用:避免表单的重复提交(如在tp5提交成功等待跳转页面刷新页面会在次提交表单) 原理:在初始化表单时,生成一个session标识'token',提交表单时将这个token一起提交过去,然后 ...

最新文章

  1. 如何使用其他文件中定义的类Python
  2. K8S 1.9.0二进制包部署(五)
  3. c# 线程间操作无效: 从不是创建控件“”的线程访问它,用托管来解决
  4. songCMS 3.15 cookie SQLINJ
  5. ARM硬件支持java技术Jazelle DBX
  6. webpack整体了解
  7. 01-windows下Elasticsearch安装
  8. 【Spring】HttpMessageConverter的作用及替换
  9. npm安装为什么要安装gyp各种报错呢
  10. extern 关键字详解
  11. 小米路由器 一直常亮黄灯 修复方法
  12. 西门子g120变频器接线图_西门子G120变频器使用小的注意事项!!!
  13. 写在博客文章后,关于为什么要写博客,特此提醒自己。
  14. 人工智能数学基础9:集合相关概念
  15. 51单片机指令系统详解
  16. zz 超级拖拉机 4.02 破解算法分析
  17. 中物院计划建国内一流科学仪器研发基地
  18. python中true什么意思_python中的bool是什么意思
  19. 蚁群算法一个VRP小实现
  20. warmup_csaw_2016

热门文章

  1. asp网页提升速度方法5则_asp技巧
  2. Redis 6.0 新特性,多线程连环 13 问!
  3. 站在吃货的角度来解释那些和微服务有关的名词
  4. 使用Nomad构建弹性基础架构:重新启动任务
  5. 什么是Scanner?next()和hasNext() ? nextLine()和hasNextLine()?
  6. Python 字典类型的使用
  7. top,right,bottom,left设置为0有什么用?
  8. 压缩文件拷到服务器损坏,压缩文件导致无法拷贝共享
  9. 属兔的人今日运势-360星座网_【生肖运势】12月17日
  10. linux模糊查找子目录,linux怎么模糊查找一个文件