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

学习笔记 马富天 2019-07-03 10:51:10 6 0

【摘要】在很多场景下,用户可能会出现表单重复提交的情况,做好防止表单重复提交是一项非常有必要的工作,本文给出一种基于 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 版本的方法简要 》

暂无评论

评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码

TOP10

  • 浏览最多
  • 评论最多