整个过程说明:
1.在页面加载以后,会为这个页面产生一个GUID值,假设为GUID1,对于每一次从服务器传过来的页面来说,这个值是永远不会重复的.
2.当点击按钮或其它,使页面的表单提交给服务器处理以后,会产生一个新的页面,也产生了一个新的GUID值,假设为GUID2
3.当刷新页面的时候,提交表单所在页面的GUID值,仍为GUID1,通过判断所传来页面的GUID值与Session中的GUID值想比较,即可防刷新.
准备:
//用于得到Session里所存的令牌值
public string GetToken()
{
if (null != Session["Token"])
{
return Session["Token"].ToString();
}
else
{
return string.Empty;
}
}
//用于产生令牌值,每一次产生的值是永远都不会重复的
private void SetToken()
{
Session.Add("Token", UserMd5(Session.SessionID + DateTime.Now.Ticks.ToString()));
}
protected string UserMd5(string str1)
{
return MD5.md5str(str1);
}
第一步:
//插入一个隐藏的控件,相当于为每一个页面给加了个GUID,对于每一个从服务器传来的页面,这个值是不同的,这个值永远与Session中的值相同.
<input id="hiddenTest" type="hidden" value="<%= GetToken() %>" name="hiddenTestN"/>
第二步:
//在page_load事件中,加入以下代码,用于在第一次产生GUID
if (null == Session["Token"])
{
SetToken();
}
第三步:
//在要防刷新的地方写上:
if (!Request.Form.Get("hiddenTestN").Equals(GetToken()))
{
return;
}
SetToken();
//***********
0
0
分享到:
相关推荐
防止页面刷新重复提交的方法 防止页面刷新重复提交是 Web 开发中常见的问题,多次提交表单可能会导致不必要的数据重复录入、服务器压力增大等问题。下面我们将详细介绍防止页面刷新重复提交的方法。 一、验证码...
### Struts Token机制防止页面刷新及重复提交 在Web应用开发过程中,特别是在使用MVC框架如Apache Struts进行开发时,防止表单重复提交是一个重要的安全措施。表单重复提交通常发生在用户点击“提交”按钮后,由于...
### ASP.NET中防止刷新页面造成表单重复提交 在Web应用程序开发中,特别是在使用ASP.NET进行网站构建时,一个常见的问题是表单重复提交。这通常发生在用户通过按下浏览器的F5键来刷新页面的情况下,此时之前的表单...
### 防止页面的重复提交和刷新 #### 一、引言 在现代Web应用开发过程中,确保数据完整性与用户体验至关重要。其中,“防止页面的重复提交和刷新”这一问题尤为关键,它不仅关系到系统的稳定性,还直接影响用户体验...
防止页面刷新主要是为了避免用户重复提交表单数据。在实际开发中,可以通过多种方法来达到这一目的: 1. **使用JavaScript禁止表单重复提交**: - 在表单提交后,可以利用JavaScript禁用提交按钮或表单,从而避免...
浏览器页面禁用刷新是一个常见的需求,特别是在开发特定的交互式应用或者进行数据提交时,防止用户意外触发页面刷新导致数据丢失。这篇博客“996-interpage”可能详细讲解了如何在JavaScript或HTML中实现这一功能。...
在Web开发中,防止用户刷新页面而导致重复提交数据是一个重要的问题。这通常涉及到表单提交、支付确认等关键操作,确保这些操作仅执行一次是非常必要的。本资源提供了一个解决方案,通过使用“Token”机制来避免这种...
在Web开发中,有时我们需要控制用户的某些操作行为,比如禁止用户刷新页面或防止他们使用浏览器的前进功能。这些需求通常出现在表单提交等场景下,目的是为了防止重复提交或其他不必要的操作,从而确保数据的一致性...
以下将详细探讨几种在ASP.NET中防止页面刷新导致重复提交的方法: ### 1. 使用转向页面语句 这是最直接且广泛使用的方法,它可以通过服务器端或客户端脚本来实现。 #### 服务器端转向 使用`Response.Redirect...
在Web开发中,"防止页面二次刷新"是一个重要的议题,主要涉及到的是防止用户无意或恶意地多次提交表单数据,这种情况通常称为"二次提交"或"重复提交"。这一问题可能会导致数据库中的数据异常,影响系统的稳定性和...
而“无刷新提交”则是现代Web交互中提高用户体验的重要技术,它允许用户在不重新加载整个页面的情况下发送请求并更新部分内容。本文将详细介绍如何在MVC框架下实现无刷新提交。 1. **无刷新提交原理**: 无刷新...
3. **状态更新**:在成功处理提交后,更新Session中的状态,或者清除它,这样即使用户再次刷新页面,也不会找到与之前提交匹配的状态,从而避免了重复处理。 然而,仅仅依赖Session来防止重复提交并非无懈可击。...
无刷新提交表单实现是现代Web开发中的一个重要技术,它为用户提供更为流畅的交互体验,无需等待整个页面刷新即可完成数据的提交与处理。这种技术通常依赖于Ajax(Asynchronous JavaScript and XML)或者现代浏览器...
使用Ajax进行异步提交,服务器返回成功后更新页面状态,而不是整个页面刷新。这样,用户点击刷新按钮只会重新加载已更新的页面,不会再次触发提交。 7. **HTTP状态码和Cache-Control**: 在响应头中设置合适的...
在网页开发中,尤其是涉及到用户交互的表单提交时,防止页面刷新导致的事件重复提交是一个常见的挑战。这个问题源于浏览器的刷新行为,它会重新发送上一次的HTTP请求,包括POST请求,即表单提交。在ASP.NET环境中,...
然而,在实现倒计时功能时,常常会遇到一个问题:当页面刷新或者重新进入倒计时页面时,由于Vue组件的重新创建,倒计时会重新从头开始,这并不是我们想要的效果。 为了解决这个问题,我们需要在Vue中实现倒计时数据...
ASP.NET和JavaScript结合实现无刷新提交是Web开发中的一个重要技术,它使得用户在与网页交互时无需等待页面完全刷新,从而提升用户体验。无刷新提交,也称为Ajax(Asynchronous JavaScript and XML)技术,通过在...
然而,这种方法并不能完全防止所有情况下的重复提交,因为某些用户可能使用浏览器的刷新功能或者在网络延迟后多次点击。 ASP.NET MVC框架提供了一些内置机制来处理此问题。例如,可以使用`AntiForgeryToken`辅助...
如果目标是防止数据丢失,可以考虑在提交数据前使用`window.onbeforeunload`事件,提示用户确认是否离开页面。对于需要防止用户离开的情况,可以使用`window.onbeforeunload`配合确认对话框。 总的来说,虽然...