如何防止表单重复提交,在涉及到网页开发中,这是一个程序猿必须要解决的基本问题,甚至被作为很多企业的面试问题。这是一个看似比较复杂的问题,但是解决办法却非常简单,主要是解决思路比较重要。
表单重复提交的原因
重复提交表单的情况发生的比较频繁,一般产生的原因有以下几种:
1.网速延迟过大,等待网页相应期间,用户反复提交表单,导致多次相同的数据被提交;
2.用户提交表单后,点击浏览器后退按钮,或者点击手机返回按钮,导致数据被重复提交;
解决方案
方案一:点击按钮后使按钮不可用
借助 js 之力,在提交按钮点击后,即取消按钮的可用性。可以阻挡网络延迟的时候用户反复点击提交按钮,导致多次提交。尤其对 ajax提交的站点有效;
甚至在 disable 按钮后,可以稍微人性化地给出提示,比如使用 jQuery 代码在提交时可以这样:
- $(".hisu").attr("disabled","disabled");
- $(".hisu").attr("value","正在发布评论...");
方案二:使用session做标记
session 支持用户整个会话的信息存储,在用户提交表单的同时使用 session 存储用户的提交信息,这种解决方法在业内被称作为令牌法,即token。
基本的步骤是:
1.用户提交数据的时候,创建session,例如创建一个名为 token 值为当前时间戳的 session;
2.存入数据库的逻辑要在存入之前检查是否有名为 token 的 session ,如果有,则返回错误,禁止提交;
这种方法应该算是在根源上杜绝了表单的重复提交。但是最好是能两者结合起来,确保数据安全的前提下还可以保证用户体验。
感谢你的赏识与认可
支付宝
微信支付
使用手机访问这篇文章
本文许可协议 © CC BY-NC-SA 4.0 转载请注明来源
- 上一篇: 又是一年双十一-ajax无刷新PHP告白墙源码免费下载
- 下一篇: 恒生电子股份有限公司的面试经历
暂无评论