表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题,比如:

点击提交按钮两次。

点击刷新按钮。

使用浏览器后退按钮重复之前的操作,导致重复提交表单。

使用浏览器历史记录重复提交表单。

浏览器重复的HTTP请求。

几种防止表单重复提交的方法

禁掉提交按钮。表单提交后使用Javascript使提交按钮disable。这种方法防止心急的用户多次点击按钮。但有个问题,如果客户端把Javascript给禁止掉,这种方法就无效了。

我之前的文章曾说过用一些Jquery插件效果不错。

Post/Redirect/Get模式。在提交后执行页面重定向,这就是所谓的Post-Redirect-Get (PRG)模式。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交成功信息页面。

这能避免用户按F5导致的重复提交,而其也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退按导致的同样问题。

在session中存放一个特殊标志。当表单页面被请求时,生成一个特殊的字符标志串,存在session中,同时放在表单的隐藏域里。接受处理表单数据时,检查标识字串是否存在,并立即从session中删除它,然后正常处理数据。

如果发现表单提交里没有有效的标志串,这说明表单已经被提交过了,忽略这次提交。

这使你的web应用有了更高级的XSRF保护。

在数据库里添加约束。在数据库里添加唯一约束或创建唯一索引,防止出现重复数据。这是最有效的防止重复提交数据的方法。

python表单防重复提交_防止表单重复提交的几种策略相关推荐

  1. java表单防重复提交_防止表单重复提交的解决方案整理

    用户在操作表单Post数据时往往会出现表单数据重复提交的问题,尤其在Web开发中此类问题比较常见.刷新页面,后退操作以前的页面,单机多次按钮都会导致数据重复提交.此类问题是因为浏览器重复提交HTTP请 ...

  2. java防止表单二次提交_防止表单重复提交

    在Web开发中表单的重复提交是很严重的问题,重复提交成功会产生垃圾数据消耗不必要的资源,更严重的是如果遇到恶意刷库的情况垃圾数据更是数不胜数.在正常使用过程中产生重复提交的情况也有多重情况:鼠标连击. ...

  3. 分布式锁防止订单重复提交_防止表单重复提交看这里!!!

    要解决重复提交这事,先要知道什么是重复提交 假如用户的网速慢,用户点击提交按钮,却因为网速慢,而没有跳转到新的页面,这时的用户会再次点击提交按钮,举个例子:用户点击订单页面,当点击提交按钮的时候,也许 ...

  4. mysql 防重复提交_怎样防止刷新重复提交、防后退

    怎样防止刷新重复提交.防后退 提交后禁用提交按钮 1.如果提交后,按F5刷新怎么办? 使用Session 在提交的页面也就是数据库处理之前: if session("ok")=tr ...

  5. 提交表单数据到数据库_普通表单不仅适用于数据库

    提交表单数据到数据库 您也可以将类似的规则应用于数据对象类型. (You can apply similar rules to data object types, too.) You probabl ...

  6. 表单展示界示例_联系表单页面设计的12个最佳实践(包括示例)

    表单展示界示例 Do you want to improve your contact form page design? A good contact form page design encour ...

  7. python数据写入csv不换行_你还在重复工作?Python轻松读写核对csv表格上万条数据!...

    工作中要核对很多的数据,所以我想到了要用编程来解决重复性的劳动工作,因为以前要核对数据的时候啊,会用筛选功能,一个个去核对,再后来学了vlookup,稍微高级一点,但是vlookup的时候也会遇到很多 ...

  8. mysql动态表单设计与实现_动态表单的数据库结构设计

    利用在线编辑器设计的表单,包含输入框,明细表(动态添加行)等需要存储到数据库的信息,现在有三种思路: 1.一个表单对应数据库的一张或多张物理表(主从表),这种设计在很多业务的情况下,其数据库的物理表会 ...

  9. python删除字符串中重复字符_删除字符串中重复字符python 用CAD怎么画DNA反向

    用CAD怎么画DNA反向平行双螺旋结构绘螺旋线时,用选扭曲,确定顺时针. 画双头螺旋线时,第二根螺旋线底圆起点与第一根螺旋线底圆起点,可用角度分隔如180°.python去除文本中重复的字符串可有可无 ...

最新文章

  1. 牛年前的一小结——打响本命年的第一枪,继续刷题!
  2. java 取字段_java – 获取字段的名称
  3. ISAIR2022征稿【中国・上海​, 2022年10月21-23日】
  4. 迎接5G普及风暴,还缺这把「万能钥匙」
  5. 陈天桥:欣赏360保护隐私 用户安全永远第一
  6. [Python图像处理] 十一.灰度直方图概念及OpenCV绘制直方图
  7. Java基础实战Bank项目01-04
  8. 从堆里找回“丢失”的代码
  9. markdown-Macdown
  10. 如何使用Google Analytics(分析)设置和跟踪YouTube频道的效果
  11. p语言是python吗-Python语言
  12. 设计模式解密(9)- 装饰者模式
  13. Infopath 2013 通过UserProfileService读取AD用户信息
  14. 订阅github release(官方+IFTTT)
  15. Python训练自己的语音识别系统
  16. c语言循环语句解鸡兔同笼,JavaScript的for循环语句练习之解决鸡兔同笼问题
  17. 各种主流浏览器的调试
  18. device 查看tensor_Tensor数据操作
  19. Save coredump
  20. 百度搜索结果网站排名因素

热门文章

  1. 交叉分解(Cross decomposition)、典型关联分析(Canonical Correlation Analysis,CCA)、偏最小二乘回归PLS
  2. emoji mysql 转 unicode_unicode和emoji编码
  3. java操作excel常用的两种方式
  4. 基因组行业重大事件介绍
  5. Long-read human genome sequencing and its applications
  6. A Comprehensive Analysis of Sequence Alignment Algorithms for LongRead Sequencing
  7. LoRDEC: accurate and efficient long read error correction LoRDEC:精确且高效的长read校正
  8. java gc full gc_记一次Java服务频繁Full GC的排查过程
  9. three.js 调用网络摄像头
  10. ubuntu18.04.4 安装百度硬盘