表单防止重复提交的四种方式

简介: 表单防止重复提交的四种方式

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

  下面简单介绍我所了解的在开发过程中可以防止表单数据重复提交的四种解决方案。

一、在数据库添加唯一字段

   在数据库建表的时候在ID字段添加主键约束,账号,名称的信息添加唯一性约束。确保数据库只可以添加一条数据。

  此方法最有效的防止了数据重复提交。

二、用js为添加禁用

 当用户提交表单之后,可以使用js将提交按钮隐藏(disable属性),防止用户多次点击按钮提交数据。

   注意:如果客户端禁止使用js,则此方法无效。

三、使用Post/Redirect/Get

 Post/Redirect/Get简称PRG,是一种可以防止表单数据重复提交的一种Web设计模式,像用户刷新提交响应页面等比较典型的重复提交表单数据的问题可以使用PRG模式来避免。例如:当用户提交成功之后,执行客户端重定向,跳转到提交成功页面。

  注意:PRG设计模式并不适用所有的重复提交情况,比如:

      1)由于服务器响应缓慢,用户刷新提交POST请求造成的重复提交。

      2)用户点击后退按钮,返回到数据提交界面,导致的数据重复提交。

      3)用户多次点击提交按钮,导致的数据重复提交。

      4)用户恶意避开客户端预防多次提交手段,进行重复数据提交。

四、使用session设置令牌

 产生页面时,服务器为每次产生的Form分配唯一的随机标识号,并且在form的一个隐藏字段中设置这个标识号,同时在当前用户的Session中保存这个标识号。当提交表单时,服务器比较hidden和session中的标识号是否相同,相同则继续,处理完后清空Session,否则服务器忽略请求。

  注意:恶意用户可利用这一性质,不断重复访问页面,以致Session中保存的标识号不断增多,最终严重消耗服务器内存。可以采用在Session中记录用户发帖的时间,然后通过一个时间间隔来限制用户连续发帖的数量来解决这一问题。

目录
相关文章
|
存储 XML Java
Flowable工作流-高级篇
Flowable工作流-高级篇
7446 1
|
SQL 关系型数据库 数据库
学习分布式事务Seata看这一篇就够了,建议收藏
学习分布式事务Seata看这一篇就够了,建议收藏
20103 2
|
Web App开发 前端开发 JavaScript
控制台出现报错DevTools failed to load source map: Could not load content for chrome-extension://的原因及解决方案
控制台出现报错DevTools failed to load source map: Could not load content for chrome-extension://的原因及解决方案
958 0
控制台出现报错DevTools failed to load source map: Could not load content for chrome-extension://的原因及解决方案
|
6月前
|
人工智能 自然语言处理 IDE
【HarmonyOS 5】鸿蒙CodeGenie AI辅助编程工具详解
1、CodeGenie是什么? CodeGenie (代码精灵)作为鸿蒙DevEco IDE自带的AI辅助编码工具。
331 0
|
5月前
|
Java Spring 容器
DI依赖注入的几种手段
本内容介绍了依赖注入的四种方式:构造器注入、接口注入、Setter注入和注解注入,并重点比较了Spring中的@Autowired与Java标准注解@Resource的区别,包括来源和依赖查找策略。
292 0
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
8223 111
|
数据采集 JavaScript 前端开发
Vue面试题二】、说说你对SPA (单页应用) 的理解?
这篇文章详细介绍了单页应用(SPA)的概念、与多页应用(MPA)的区别、SPA的优缺点,并提供了实现SPA的基本方法和为SPA应用进行搜索引擎优化(SEO)的几种策略。
Vue面试题二】、说说你对SPA (单页应用) 的理解?
|
SQL
SQL使用with构建临时表
SQL使用with构建临时表
470 8
|
存储 前端开发 JavaScript
解决重复提交问题(前端和后端的解决方案java版)
解决重复提交问题(前端和后端的解决方案java版)
675 0
|
缓存 前端开发 Java
Spring Boot中防止接口重复提交
Spring Boot中防止接口重复提交
1857 0