防止用户将表单重复提交的方法汇总
表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题,比如:
点击提交按钮两次。 点击刷新按钮。 使用浏览器后退按钮重复之前的操作,导致重复提交表单。 使用浏览器历史记录重复提交表单。 浏览器重复的HTTP请求。
几种防止表单重复提交的方法
1.禁掉提交按钮。表单提交后使用Javascript使提交按钮disable。这种方法防止心急的用户多次点击按钮。但有个问题,如果客户端把Javascript给禁止掉,这种方法就无效了。
我之前的文章曾说过用一些Jquery插件效果不错。
2.Post/Redirect/Get模式。在提交后执行页面重定向,这就是所谓的Post-Redirect-Get (PRG)模式。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交成功信息页面。
这能避免用户按F5导致的重复提交,而其也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退按导致的同样问题。
3.在session中存放一个特殊标志。当表单页面被请求时,生成一个特殊的字符标志串,存在session中,同时放在表单的隐藏域里。接受处理表单数据时,检查标识字串是否存在,并立即从session中删除它,然后正常处理数据。
如果发现表单提交里没有有效的标志串,这说明表单已经被提交过了,忽略这次提交。
这使你的web应用有了更高级的XSRF保护。
4.在数据库里添加约束。在数据库里添加唯一约束或创建唯一索引,防止出现重复数据。这是最有效的防止重复提交数据的方法。
以上就是这4种方法的介绍了,小伙伴们如果有更好的解决方法,也请告之,本文将持续更新。
您可能感兴趣的文章
- 01-10HTML绘制用户注册页面
- 01-10简单html以及css的用法详解
- 01-10html格式化输出JSON示例(测试接口)
- 01-10html2canvas 将html代码转为图片的使用方法
阅读排行
本栏相关
- 04-02表格样式css样式,css样式表单
- 04-02好看的字体样式css,好看的字体样式图
- 04-02分页样式css,分页样式jq
- 04-02分页样式css,分页样式栏里用来定义首
- 04-02css样式的引入,css样式怎么引入
- 04-02css滚动条样式,css滚动条的样式
- 04-02css样式引入方式有几种,网页引入css样
- 04-02html中加入css样式的简单介绍
- 04-02vue中的css样式布局,vue添加css样式
- 04-02内嵌样式css,内嵌样式表,内部样式表
随机阅读
- 01-10C++实现将数组中的值反转
- 08-05dedecms织梦模板编辑文档的同时自动更
- 01-11常用的HTML富文本编译器UEditor、CKEdi
- 01-10bat批处理彻底隐藏文件的方法(使用
- 08-05dedecms织梦模板全站调用收藏数的方法
- 01-10C++ 类访问控制的条件总结
- 08-05DEDECMS点击主栏目默认显示第一个子栏
- 01-10C语言打印杨辉三角示例汇总
- 08-05织梦dedecms首页调用缩略图为背景
- 01-10vue实现分页加载效果