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

   2015-06-26 0
核心提示:表单重复提交是在多用户Web应用中最常见的一个问题,很多场合都会遇到这种情况,下面与大家分享下防止表单重复提交的几种策略
表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题,比如:

点击提交按钮两次。
点击刷新按钮。
使用浏览器后退按钮重复之前的操作,导致重复提交表单。
使用浏览器历史记录重复提交表单。
浏览器重复的HTTP请求。

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

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

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

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

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

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

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

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

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

在数据库里添加约束。在数据库里添加唯一约束或创建唯一索引,防止出现重复数据。这是最有效的防止重复提交数据的方法。
 
标签: 表单 重复提交
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • PHP 获取提交表单数据方法
    PHP $_GET 和 $_POST变量是用来获取表单中的信息的,比如用户输入的信息。PHP表单操作在我们处理HTML表单和PHP表单时,我们要记住的重要一点是:HTML页面中的任何一个表单元素都可以自动的用于PHP脚本:表单举例: htmlbodyform action="welcome.php" method
    02-09
  • 使用WebClient自动填写并提交ASP.NET页面表单的源代码
    使用WebClient自动填写并提交ASP.NET页面表单的
    转自:http://www.cnblogs.com/anjou/archive/2007/03/07/667253.html 在.NET中通过程序填写和提交表单还是比较简单。比如,要提交一个如下图所示的登录表单:           填写和提交以上表单的代码如下:       // 要提交表单的URI字符串
    02-09
  • 关于小程序表单验证解决方案 关于小程序表单验
    小程序中遇到了表单验证,刚开始想自己写一个正则.但是最后还是使用了WxValidate.js这个东西,他只需要将一个js文件放进你的项目,用的时候引用一下,就可以了.非常的方便. 接下来说一下怎么使用,1.在github下载WxValidate.js2.放入你的项目其中一个文件夹下.3.
    02-09
  • nodejs表单验证 vue.js表单验证
    //创建express连接var exp = require('xepress'),  http = require('http');//初始化exprerss模块  var app = exp();//配置端口号app.set('post',8080);//设置静态路径app.use(exp.static(__dirname +"储存前台数据的文件夹路径及名字"));//设置图标app.
    02-09
  • PHP防止表单重复提交的几种常用方法汇总
    1.使用JS让按钮在点击一次后禁用(disable)。采用这种方法可以防止多次点击的发生,实现方式较简单。缺点是若客户端禁止JavaScript脚本,则失效。2.在提交成功后执行页面重定向(redirect)。转到提交成功信息页面。特点:避免F5重复提交,消除浏览器前进和
    02-09
  • php 表单 email, URL 正则表达式
  • PHP对表单提交特殊字符的过滤和处理 php正则过
    函数名 释义 介绍htmlspecialchars将与、单双引号、大于和小于号化成HTML格式转成amp; "转成quot;' 转成#039;转成lt;转成gt;htmlentities()所有字符都转成HTML格式除上面htmlspecialchars字符外,还包括双字节字符显示成编码等。   addslashes单双引号
    02-09
  • php表单修改数据 php怎么实现修改数据功能
    (接前面写的)第一个页面xiugai.php!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"html xmlns="http://www.w3.org/1999/xhtml"headmeta http-equiv="Content-Type"
    02-09
  • ASP.NET From表单转实体类
    经常遇到 int Age=Convert.ToInt32(this.txtAge.Text);这种蛋疼的代码,特写次方法。之所以抛出异常是希望知道转换失败,格式错误的属性是什么,方便调试。新版本//新版本,可以再globa.ascx里面设置开发模式//以便于调试错误//表单转实体对象V2版public clas
    02-09
  • Asp.Net Mvc表单验证方法
       本文所讲的是在Asp.Net MVC框架下所提供的表单验证方法,实现步骤:1.定义验证规则  2.应用验证规则  3.显示验证信息   验证规则:1.Required:必填验证 2Compare:比较验证(验证两个值是否一致)3.StringLength:字符串长度验证(可以单独设置最大值
    02-09
点击排行