博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】在很多场景下,用户可能会出现表单重复提交的情况,做好防止表单重复提交是一项非常有必要的工作,本文给出一种基于 session 和 token 令牌方式的服务器端防止表单重复提交的方法。
首先给出几种可能导致用户在无意识的情况下重复提交的场景:
1)由于网络延时,用户以为没有提交成功,多次点击提交按钮;
2)用户提交成功后,页面不跳转,用户重新刷新页面时,重复提交表单;
3)用户提交成功后,页面跳转,但是点击浏览器的返回按钮,回到表单提交页面,导致表单再次被提交。
基于前端的两种放重复提交的方法:
1)点击提交后,将提交按钮设置成 disabled;
2)使用 js 判断是否提交,若已提交过,则不再允许提交。
基于前端的方法是可以防止用户主动的去重复点击提交按钮,提交无效,但并不能真正的在服务器端做防重复提交判断。因此给出如下思路:
通过 session token (session 令牌),当客户端浏览器请求页面时,服务器端使用 token 标签生成一个随机数,并将给随机数存到 session 中,然后将该数存放至页面的 input(hidden)中。当用户第一次提交时,会先判断 session 中存放的随机数是否与用户提交的 token 随机数值是否一致,若一致则允许用户提交,提交后并清空该 session 值,这样当用户再次出现重复提交时,就不会提交成功。
以上就是基本的思路,本文就不给出具体的代码示例了,原理就是如此,主要就是 token 的随机数生成算法。
版权归 马富天个人博客 所有
本文标题:《基于 session 的防止表单重复提交【 token 令牌机制】》
本文链接地址:http://www.mafutian.com/424.html
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^
顶0
踩0
第 1 楼 VPS234主机测评 2019-09-10 15:09:50 暂无分享
评论审核未开启 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
||