`

javascript下阻止表单重复提交、防刷新、防后退

阅读更多
1 服务器端的解决方法。这是我最为推荐的方法。优点是判断准确,兼容性最大。
做法:a页面显示表单,然后提交b页面处理,处理完后重定向到c页面显示结果。
1.0 在访问a页面时在session里生成一个标志ID,例如
//伪代码 
session("submitID")=random() 
然后把这个值写到表单的一个hidden的input里 
//伪代码 
<%response.write("<input name=submitID2 type=hidden value=\""+session("submitID")+"\">")%> 

1.1 b页面处理时判断表单所提交的submitID2的值是否和session中的submitID一致,不一致的话重定向到报错页面,一致的话把session中的submitID清空然后进行表单处理
//伪代码 
session("submitID")="" 
//然后处理提交...... 

处理完成后重定向到c页面
1.2 c页面其实就没什么好说的了,就是一个显示处理结果的页面。

2 客户端用js解决
这种方法不好,因为必然会遇到不同浏览器的兼容性问题,而且是必然可以绕过的。唯一的优点就是简单,不需要太多的编码
2.0 防止后退
在每个页面的最顶上加上这个代码
<script>window.history.forward();</script> 

2.1防止刷新
我很难想到什么好方法可以做到。因为要屏蔽的地方太多了。只好采用一种很烂的方法:
<body onunload="location='about:blank'>"  


方法2:
防止误刷新页面

 
  window.onbeforeunload = function(){
    return "您正要离开本页面,您所做的所有的修改都会丢失,确定么?";
    };

    正常提交时,还得屏掉。

  
 frm.onsubmit = function(){

    window.onbeforeunload = null;

    }

分享到:
评论

相关推荐

    防止刷新后退重复提交

    针对这个问题,我们可以采取多种策略来防止刷新后退时的重复提交。以下是针对"防止刷新后退重复提交"这一主题的详细知识点: 1. **令牌(Token)技术**: 服务器在处理表单提交前,生成一个唯一的令牌(Token),...

    防止表单重复提交

    这种方法有效防止了用户短时间内多次点击提交按钮的情况,但并不能应对用户刷新页面或使用浏览器的前进/后退功能导致的重复提交。 第二种情况,用户在表单提交后刷新页面,会导致浏览器重新发送之前的POST请求,...

    防止页面的重复提交和刷新

    重复提交通常发生在用户在未收到明确反馈的情况下尝试多次提交表单的情况。这种情况可能会导致数据库中出现重复的数据记录,从而影响数据的一致性和准确性。例如,在在线购物系统中,用户可能会担心支付请求没有被...

    J2EE框架-重复提交、重复刷新、防止后退的问题以及处理方式

    在J2EE框架中,开发过程中常常会遇到一些与用户交互相关的技术问题,如重复提交、重复刷新以及防止用户后退导致的数据不一致。这些问题在实际应用中可能会对系统的稳定性和数据完整性造成影响,因此需要采取相应的...

    Asp.net刷新重复提交

    在ASP.NET web应用程序中,"刷新重复提交"是一个常见的问题,它发生在用户点击浏览器的刷新按钮或者使用前进/后退导航时。这可能导致数据的不一致性和错误,因为服务器可能会收到相同请求的多次处理,而这些请求原本...

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

    使用浏览器后退按钮重复之前的操作,导致重复提交表单。 使用浏览器历史记录重复提交表单。 浏览器重复的HTTP请求。 几种防止表单重复提交的方法 禁掉提交按钮。表单提交后使用Javascript使提交按钮disable。这种...

    试谈在Web应用中如何避免表单的重复提交.pdf

    或者用户单击“后退”按钮后,再次提交表单,那么也将导致表单的重复提交。 二、 服务器端避免表单的重复提交 2.1 利用同步令牌来解决重复提交的基本原理 基本原理如下: (1) 用户访问提交数据的页面,服务器端...

    无刷新提交表单实现

    无刷新提交表单是Web开发中的一个重要技术,它允许用户在不重新加载整个网页的情况下更新部分页面内容。这种技术极大地提升了用户体验,因为它减少了等待时间和网络流量。本文将深入探讨无刷新提交表单的实现原理、...

    JSP_重复提交_解决方法

    这种方法适用于简单的页面,但如果用户手动刷新页面或重复提交,可能无法完全阻止重复提交。 ##### 方法2:令牌验证机制 为了进一步增强安全性,可以通过生成一个唯一的令牌并存储在用户的session中。每次提交表单...

    asp.net 防止用户通过后退按钮重复提交表单

    - 使用`window.history.forward(1)`:在处理表单提交后的页面中插入这段JavaScript代码,可以强制浏览器前进到下一个历史记录,从而模拟用户不能后退的效果。然而,这种方法并不能完全阻止用户通过其他方式回到前一...

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

    c&gt;使用浏览器后退按钮重复之前的操作,导致重复提交表单。 d&gt;使用浏览器历史记录重复提交表单。 e&gt;浏览器重复的HTTP请求。 二、防止表单重复提交的方法 a&gt;禁掉提交按钮。表单提交后disabled现在的按钮或者取消该...

    解决php表单重复提交实现方法

    在Web开发中,表单重复提交是一个常见的问题,可能导致数据的不一致性或者冗余。PHP作为服务器端脚本语言,提供了多种方式来防止表单的重复提交。本文将详细介绍一种基于Session的PHP防止表单重复提交的实现方法。 ...

    PHP防止表单重复提交的几种常用方法汇总

    这种方法的缺点在于,它只能防止用户在不刷新页面的情况下重复提交同一个表单,无法完全防止多次提交。 最后,使用数据库的唯一索引约束来防止重复提交是一种更加严格的措施。通过在数据库表中的关键字段上建立唯一...

    ThinkPHP防止重复提交表单的方法实例分析

    2. 提交按钮禁用法:这种方法结合了页面跳转法,在用户提交表单后,通过JavaScript动态地将提交按钮设置为不可用状态,从而阻止用户重复点击提交按钮。示例代码如下: ```html ('User/Index/check_login')}" method...

    Java怎样防止重复提交

    每个表单提交时附带一个与Session中保存的令牌相匹配的令牌,提交后更新Session中的令牌,使得下一次提交的令牌无法匹配,从而避免重复处理。 6. **HTTP状态码和重定向**: - 在处理完请求后,服务器可以发送303 ...

    防止用户将表单重复提交的方法汇总

    使用浏览器后退按钮重复之前的操作,导致重复提交表单。 使用浏览器历史记录重复提交表单。 浏览器重复的HTTP请求。  几种防止表单重复提交的方法  1.禁掉提交按钮。表单提交后使用Javascript使提交按钮disable。...

    ThinkPHP 防止表单重复提交的方法

    客户端脚本防止刷新,通常指的是在用户提交表单之后,通过JavaScript或者jQuery来禁用提交按钮或者阻止表单的默认提交行为,以防止用户在表单提交后通过刷新页面导致重复提交。这种方法通常用于一些不需要复杂交互的...

Global site tag (gtag.js) - Google Analytics