常见表单重复提交问题整理及解决方法

 更新时间:2013年11月13日 16:22:30   作者:  
常见的重复提交问题如点击提交按钮两次、点击刷新按钮等等,下面为大家整理了防止表单重复提交的方法,感兴趣的朋友可以参考下
/**
*
* @authors Benjamin
* @date 2013-11-13 10:16:59
*/

一、常见的重复提交问题
a>点击提交按钮两次。
b>点击刷新按钮。
c>使用浏览器后退按钮重复之前的操作,导致重复提交表单。
d>使用浏览器历史记录重复提交表单。
e>浏览器重复的HTTP请求。

二、防止表单重复提交的方法
  a>禁掉提交按钮。表单提交后disabled现在的按钮或者取消该按钮的点击事件或者默认事件。这种方法防止心急的用户多次点击按钮。但有个问题,如果在客户端把Javascript给禁止掉,这种方法就无效了,当然现代的web站点来说,应该很少了。

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

  c>使用cookie处理表单重复提交
  PHP中的实现:
复制代码 代码如下:

  lt;?php
   if(isset($_POST['go'])){
   setcookie("tempcookie","",time()+30);
   header("Location:".$_SERVER[PHP_SELF]);exit();
   } if(isset($_COOKIE["tempcookie"])){
   setcookie("tempcookie","",0);echo "您已经提交过表单";
   }
   ?>

  d>在session中存放一个特殊标志。当表单页面被请求时,生成一个特殊的字符标志串,存在session中,同时放在表单的隐藏域里。接受处理表单数据时,检查标识字串是否存在,并立即从session中删除它,然后正常处理数据。如果发现表单提交里没有有效的标志串,这说明表单已经被提交过了,忽略这次提交。这使你的web应用有了更高级的XSRF保护。

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

相关文章

  • 微信小程序实现课程选择器

    微信小程序实现课程选择器

    这篇文章主要为大家详细介绍了微信小程序实现课程选择器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • SpringMVC返回json数据的三种方式

    SpringMVC返回json数据的三种方式

    这篇文章主要介绍了SpringMVC返回json数据的三种方式的相关资料,需要的朋友可以参考下
    2015-12-12
  • JavaScript中的onerror事件概述及使用

    JavaScript中的onerror事件概述及使用

    onerror事件用来协助处理页面中的JavaScript错误主要包括:Window.onerror事件,img载入错误,接下来为大家详细介绍下,感兴趣的朋友可以参考下哈
    2013-04-04
  • moment.js 时间日期处理详解

    moment.js 时间日期处理详解

    这篇文章主要介绍了moment.js 时间日期处理详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • JS简单限制textarea内输入字符数量的方法

    JS简单限制textarea内输入字符数量的方法

    这篇文章主要介绍了JS简单限制textarea内输入字符数量的方法,涉及JavaScript响应鼠标及键盘事件处理textarea输入框字符的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • 详解JS中的柯里化(currying)

    详解JS中的柯里化(currying)

    这篇文章主要介绍了JS中的柯里化(currying),需要的朋友可以参考下
    2017-08-08
  • 判定对象是否为window的js代码

    判定对象是否为window的js代码

    这是一个非常有趣的题目。我们先从Object.prototype.toString入手,看能否解决它。
    2010-02-02
  • javascript实现数字时钟效果

    javascript实现数字时钟效果

    这篇文章主要为大家详细介绍了javascript实现数字时钟效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • XMLHTTPRequest的属性和方法简介

    XMLHTTPRequest的属性和方法简介

    由于现在在公司负责制作标准的静态页面,为了增强客户体验,所以经常要做些AJAX效果,也许你也和我一样在,学习AJAX。
    2010-11-11
  • JS实现具备延时功能的滑动门菜单效果

    JS实现具备延时功能的滑动门菜单效果

    这篇文章主要介绍了JS实现具备延时功能的滑动门菜单效果,涉及JavaScript基于鼠标事件与时间函数实现页面样式延迟变换功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09

最新评论