客户端方案

禁掉提交按钮。

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

使用Post/Redirect/Get模式

在提交后执行页面重定向,这就是所谓的Post-Redirect-Get (PRG)模式。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交成功信息页面。
这能避免用户按F5导致的重复提交,而其也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退按导致的同样问题。

使用Cookie处理

使用Cookie记录表单提交的状态,根据其状态可以检查是否已经提交表单,如果客户端禁止了Cookie,该方法将不起任何作用,这点请注意。

服务端方案

在session中存放一个特殊标志

在服务器端生成一个唯一的标识符,并将其存入session,同时将之写入表单的隐藏字段中,然后将表单页面发给浏览器。用户录入信息后点击提交。在服务器端,获取表单中隐藏字段的值,与session中的唯一标识符比较,相等说明是首次提交,就处理本次请求,然后将session中的唯一标识符移除;不相等说明是重复提交,就不再处理。这使你的web应用有了更高级的XSRF保护。

使用header函数转向

当用户提交表单,服务器端处理后立即转向其他的页面。这样,即使用户使用刷新键,也不会导致表单的重复提交,因为已经转向新的页面,而这个页面脚本已经不理会任何提交的数据了。

在数据库里添加约束

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

转载于:https://www.cnblogs.com/amunote/p/10349416.html

如何避免表单重复提交相关推荐

  1. springboot 订单重复提交_Spring Boot (一) 校验表单重复提交

    一.前言 在某些情况下,由于网速慢,用户操作有误(连续点击两下提交按钮),页面卡顿等原因,可能会出现表单数据重复提交造成数据库保存多条重复数据. 存在如上问题可以交给前端解决,判断多长时间内不能再次点 ...

  2. SpringMVC中实现的token,防表单重复提交

    一:首先创建一个token处理类  ,这里的类名叫 TokenHandler private static Logger logger = Logger.getLogger(TokenHandler. ...

  3. 简单介绍redis分布式锁解决表单重复提交的问题

    在系统中,有些接口如果重复提交,可能会造成脏数据或者其他的严重的问题,所以我们一般会对与数据库有交互的接口进行重复处理.本文就详细的介绍一下redis分布式锁解决表单重复提交,感兴趣的可以了解一下 假 ...

  4. python表单防重复提交_防止表单重复提交的几种策略

    表单重复提交是在多用户Web应用中最常见.带来很多麻烦的一个问题.有很多的应用场景都会遇到重复提交问题,比如: 点击提交按钮两次. 点击刷新按钮. 使用浏览器后退按钮重复之前的操作,导致重复提交表单. ...

  5. 表单重复提交的解决方法

    表单重复提交的解决方法 参考文章: (1)表单重复提交的解决方法 (2)https://www.cnblogs.com/lwj-0923/p/7367517.html 备忘一下.

  6. ASP.NET防止按F5键造成表单重复提交

    F5键会引起表单重复提交,做过asp.net相信都会遇到过这个问题. 最有效的是一篇发表在MSDN的方法 原理如下: 在asp.net页面中有一个名为_VIEWSTATE的隐藏域,这个隐藏域保存着当前 ...

  7. 使用Struts2防止表单重复提交

    用户重复提交表单在某些场合将会造成非常严重的后果.例如,在使用信用卡进行在线支付的时候,如果服务器的响应速度太慢,用户有可能会多次点击提交按钮,而这可能导致那张信用卡上的金额被消费了多次.因此,重复提 ...

  8. Struts2防止表单重复提交

    最近开发中涉及到了表单重复提次的问题,通过研究做个总结. 防止表单重复提交主要用的到标签是<s: token />,拦截器 <interceptor-ref name="t ...

  9. 开发期间模板引擎页面修改以后,要实时生效 || 登陆成功,防止表单重复提交,可以重定向||只有登录之后才能访问相关的页面

    去除模板引擎的缓存 th:if  优先级高于  th:text 登陆成功,防止表单重复提交,可以重定向到主页 只有登录之后才能访问相关的页面 login.html <!DOCTYPE html& ...

最新文章

  1. 不学无数——SpringBoot入门Ⅱ
  2. C 语言编程 — 基本数据类型
  3. 嵌入式烤箱能不能放台面上_2021年开放式厨房怎么设计?先来做做嵌入式家电的功课吧!...
  4. 计算机语言中daly什么意思,计算机组成与体系结构
  5. java中case语句_Java:switch-case语句
  6. h3c交换机怎么设置虚拟服务器,H3C交换机配置 | 如何实现两个网段主机与外部通信...
  7. paip.提升用户检验-----列表摘要
  8. VS2017插件工具-VisualSVN(6.3.0)-破解之法
  9. 关于php后台的知识,xfplay影音先锋画面声音不同步的处理教程 爱狐网 (‾◡◝)...
  10. 一、爬虫 - 新浪爱问共享资源全下载之解决方案
  11. 协议软件服务器吗,使用开源协议软件搭建即时通讯服务器.doc
  12. 空间后方交会编程c语言,C语言空间后方交会源代码.doc
  13. u盘启动计算机的几种方式,U盘各种启动模式方法介绍 六种U盘启动模式
  14. 计算机 桌面上的文件怎么发送,文本文件如何发送到QQ邮箱里?
  15. window7电脑如何调亮度
  16. android 进入页面隐藏输入法
  17. Java调整图片大小合并PNG图片生成ICON(保持背景透明)
  18. 43、在java中一个类被声明为final类型,表示了什么意思?
  19. 泛函分析基础-如何证明l^∞是完备的度量空间
  20. 1989旧金山地震:动物预测成功的非经典案例

热门文章

  1. java 调内存_java内存设置
  2. 维塔与 Magic Leap 的MR游戏发布概念片
  3. C++程序员如何入门Unreal Engine 4
  4. 这家芯片公司98%员工学历不足本科,却要布局全产业链冲刺IPO,网友:认真的吗?...
  5. 聊天截图厚码也不安全,大神写了算法分分钟给你还原
  6. 任天堂经典拳击游戏可以体感操作了,打开网页就能玩,击败泰森不是梦
  7. 依图超车争夺AI创业第一股!冲刺科创板,募资75亿为造芯,去年营收91%投向研发...
  8. 全球首部AI交响变奏曲问世,AI技术应用再拓边界
  9. MIT“人造肌肉”登上Science封面,能提起自重650倍的物体,伸缩10000次都不坏
  10. 2、Ktor学习-自动重新加载;