Token,就是令牌,最大的特点就是随机性,不可预测。

Token一般用在两个地方——防止表单重复提交、anti csrf攻击(跨站点请求伪造)。

两者在原理上都是通过session token来实现的。当客户端请求页面时,服务器会生成一个随机数Token,并且将Token放置到session当中,然后将Token发给客户端(一般通过构造hidden表单)。下次客户端提交请求时,Token会随着表单一起提交到服务器端。

如果应用于“防止表单重复提交”,服务器端第一次验证相同过后,会将session中的Token值更新下,若用户重复提交,第二次的验证判断将失败,因为用户提交的表单中的Token没变,但服务器端session中Token已经改变了。

php表单加入Token防止重复提交

原理在于生成一个随机字符串放在session里,提交表单后来验证这个字符串,可以做到防止他人自己写form来欺骗提交,重复提交或者双击提交。

简单实现(仅供参考):

<?php
/*
* PHP简单利用token防止表单重复提交* 此处理方法纯粹是为了给初学者参考
*/session_start();function set_token() {$_SESSION['token'] = md5(microtime(true));}function valid_token() {$return = $_REQUEST['token'] === $_SESSION['token'] ? true : false;set_token();return $return;}//如果token为空则生成一个tokenif(!isset($_SESSION['token']) || $_SESSION['token']=='') {set_token();}if(isset($_POST['test'])){if(!valid_token()){echo "token error";}else{echo '成功提交,Value:'.$_POST['test'];}}?><form method="post" action=""><input type="hidden" name="token" value="<?php echo $_SESSION['token']?>"><input type="text" name="test" value="Default"><input type="submit" value="提交" /></form>

以上就是php防止表单重复提交的方法的详细内容,希望对你有所帮助。

5位随机数重复的概率 php_php防止表单重复提交的方法相关推荐

  1. JavaWeb -- Session实例 -- 自动登录 和 防止表单重复提交(令牌产生器) MD5码

    1. 自动登录 http://blog.csdn.net/xj626852095/article/details/16825659 2. 防止表单重复提交 表单Servlet //负责产生表单 pub ...

  2. JavaWeb -- Struts1 使用示例: 表单校验 防表单重复提交 表单数据封装到实体

    1. struts 工作流程图 超链接 2. 入门案例 struts入门案例:1.写一个注册页面,把请求交给 struts处理<form action="${pageContext.r ...

  3. 使用Struts2防止表单重复提交

    用户重复提交表单在某些场合将会造成非常严重的后果.例如,在使用信用卡进行在线支付的时候,如果服务器的响应速度太慢,用户有可能会多次点击提交按钮,而这可能导致那张信用卡上的金额被消费了多次.因此,重复提 ...

  4. JavaWeb学习总结(十三)——使用Session防止表单重复提交

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

  5. JAVA_OA(十四)番外:JAVAWEB防止表单重复提交的方法整合(包括集群部署)

    因为自己要用,所以查找了网络上javaweb项目防止表单重复提交的方法,有些部分不太好找,所以整合后贴出来,首先是孤傲苍狼的一部分博客文章,集群部署的解决方案在后面(注意大红字) 原文出处:孤傲苍狼的 ...

  6. java怎么防止表单重复提交_如何防止表单重复提交

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

  7. 由防止表单重复提交引发的一系列问题--servletRequest的复制、body值的获取

    @Time:2019年1月4日 16:19:19 @Author:QGuo 背景:最开始打算写个防止表单重复提交的拦截器:网上见到一种不错的方式,比较合适前后端分离,校验在后台实现: 我在此基础上,将 ...

  8. 使用Session防止表单重复提交

    JavaWeb学习总结(十三)--使用Session防止表单重复提交 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提 ...

  9. 防止表单重复提交的简单有效的策略

    点击提交按钮两次. 点击刷新按钮. 使用浏览器后退按钮重复之前的操作,导致重复提交表单. 使用浏览器历史记录重复提交表单. 浏览器重复的HTTP请求.用户提交表单时可能因为网速的原因,或者网页被恶意刷 ...

最新文章

  1. C#-发送接收消息MQ
  2. Feedback about (Blockchain OR ML) AND (logistics)
  3. sbt1.4.4配置国内镜像源实操教程(无痛入门)
  4. PyCairo 中的基本绘图
  5. Go 语言能取代 Java,成为下一个 10 年的王者吗?
  6. 音视频技术开发周刊 | 224
  7. C#黔驴技巧之去重(Distinct)
  8. RestFul的学习 2021-04-25
  9. Leetcode每日一题:13.roman-to-integer(罗马数字转整数)
  10. 我是如何从零开始 Web 前端自学之路的?
  11. anaconda新建环境在PyCharm执行import ssl失败
  12. json取数据怎么取_灯罩怎么取下来 各种吸顶灯的灯罩拆卸方法
  13. 开课吧:微服务与DDD解析
  14. 深度学习推荐模型-DIN
  15. Java TCP小结
  16. 阿里云短信验证码+Java开发
  17. java excel 创建控件_Java 添加、删除Excel表单控件
  18. 2020牛客暑期多校训练营(第九场) Groundhog and 2-Power Representation
  19. 微信扫码下载APP(带有蒙层)
  20. mybatis中如何防止sql注入和传参

热门文章

  1. android中关于手机屏幕的相关操作(获取屏幕的宽高等操作)
  2. 不讲嫖德?这些年接触/使用的网页剪辑工具小汇总大总结
  3. 【PC工具】更新文字转语音、文字文本朗读工具,语音朗读软件,TTS语音合成...
  4. 售后服务成OA品牌竞争重要因素
  5. js怎么获取访问页数记录(知道的能不能告诉我一下)
  6. 配置Java开发环境
  7. SVN服务器与客户端的配置
  8. 数据库如何闪回到某个时间点?
  9. 1.01 与 37.8
  10. Windows 性能问题诊断(5)