首页 / 技术 / 正文

防止表单重复提交的两种解决方案

2015年11月15日 暂无评论 ... 技术

如何防止表单重复提交,在涉及到网页开发中,这是一个程序猿必须要解决的基本问题,甚至被作为很多企业的面试问题。这是一个看似比较复杂的问题,但是解决办法却非常简单,主要是解决思路比较重要。

表单重复提交的原因

重复提交表单的情况发生的比较频繁,一般产生的原因有以下几种:

1.网速延迟过大,等待网页相应期间,用户反复提交表单,导致多次相同的数据被提交;

2.用户提交表单后,点击浏览器后退按钮,或者点击手机返回按钮,导致数据被重复提交;

解决方案

方案一:点击按钮后使按钮不可用

借助 js 之力,在提交按钮点击后,即取消按钮的可用性。可以阻挡网络延迟的时候用户反复点击提交按钮,导致多次提交。尤其对 ajax提交的站点有效;

甚至在 disable 按钮后,可以稍微人性化地给出提示,比如使用 jQuery 代码在提交时可以这样:

  1. $(".hisu").attr("disabled","disabled");  
  2. $(".hisu").attr("value","正在发布评论..."); 

 

方案二:使用session做标记

session 支持用户整个会话的信息存储,在用户提交表单的同时使用 session 存储用户的提交信息,这种解决方法在业内被称作为令牌法,即token。

基本的步骤是:

1.用户提交数据的时候,创建session,例如创建一个名为 token 值为当前时间戳的 session;

2.存入数据库的逻辑要在存入之前检查是否有名为 token 的 session ,如果有,则返回错误,禁止提交;

 

这种方法应该算是在根源上杜绝了表单的重复提交。但是最好是能两者结合起来,确保数据安全的前提下还可以保证用户体验。

暂无评论

发布评论