重复提交表单是多
用户Web
应用程序中最常见和最麻烦的问题之一,有许多应用程序场景会遇到重复提交问题,例如:
点击提交按钮两次。
单击刷新按钮。
使用
浏览器后退按钮重复以前的
操作,导致重复提交表单。
使用浏览器历史记录重复提交。
浏览器重复HTTP请求。
防止重复提交表单的几种
方法 没有提交按钮。在提交表单后,使用Javascript使提交按钮失效。这种方法防止紧急用户多次点击按钮。但是,如果客户端禁用Javascript,则该方法无效。
我之前的文章已经说过一些jQuery
插件很好。
邮政/重定向/获取
模式。提交后,进行页面重定向,这是所谓的后重定向到(PRG)模式。总之,当用户提交表单时,您
执行重定向客户端向成功提交信息页面。
这样就避免了由于F5而造成的用户重复提交,并且不出现浏览器表单重复提交的警告,也消除了浏览器前进和后退所带来的问题。
店特别的
登录会话。当表单页面被请求时,生成一个特殊的字符串,在会话中放在形式的隐藏域。在接受表单数据的
处理,
检查是否存在身份字符串并立即
删除它从会话,然后把手数据正常。
如果表单提交中没有有效字符串,则表示表单已提交并忽略提交。
这使您的Web应用程序有一个更先进的XSRF
保护。
向数据库添加约束。在数据库中添加唯一的约束或
创建唯一的索引以防止数据重复。这是防止重复提交数据的最有效的方法。