基于 session 的防止表单重复提交【 token 令牌机制】

学习笔记 马富天 2019-07-03 10:51:10 18 1

【摘要】在很多场景下,用户可能会出现表单重复提交的情况,做好防止表单重复提交是一项非常有必要的工作,本文给出一种基于 session 和 token 令牌方式的服务器端防止表单重复提交的方法。

首先给出几种可能导致用户在无意识的情况下重复提交的场景:

1)由于网络延时,用户以为没有提交成功,多次点击提交按钮;

2)用户提交成功后,页面不跳转,用户重新刷新页面时,重复提交表单;

3)用户提交成功后,页面跳转,但是点击浏览器的返回按钮,回到表单提交页面,导致表单再次被提交。

基于前端的两种放重复提交的方法:

1)点击提交后,将提交按钮设置成 disabled;

2)使用 js 判断是否提交,若已提交过,则不再允许提交。

基于前端的方法是可以防止用户主动的去重复点击提交按钮,提交无效,但并不能真正的在服务器端做防重复提交判断。因此给出如下思路:

通过 session token (session 令牌),当客户端浏览器请求页面时,服务器端使用 token 标签生成一个随机数,并将给随机数存到 session 中,然后将该数存放至页面的 input(hidden)中。当用户第一次提交时,会先判断 session 中存放的随机数是否与用户提交的 token 随机数值是否一致,若一致则允许用户提交,提交后并清空该 session 值,这样当用户再次出现重复提交时,就不会提交成功。

以上就是基本的思路,本文就不给出具体的代码示例了,原理就是如此,主要就是 token 的随机数生成算法。

版权归 马富天PHP博客 所有

本文标题:《基于 session 的防止表单重复提交【 token 令牌机制】》

本文链接地址:http://www.mafutian.net/424.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 mysql 索引类型简介 》 下一篇《 wampserver 2.5 下面添加其它 php 版本的方法简要 》

所有评论

  1. 首页
  2. 上一页
  3. 1
  4. 下一页
  5. 尾页
  6. 第1页
  7. 每页12条
  8. 共1页
  9. 共1条
评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码

TOP10

  • 浏览最多
  • 评论最多