整个过程说明:
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
分享到:
相关推荐
防止页面刷新重复提交的方法. 防止页面刷新重复提交的方法.
ASP.NET中防止刷新页面造成表单重复提交
提供源代码和思想,整体架构都在,只需加入你自己的业务逻辑即可。
防止页面的重复提交和刷新,详细实例和注解
源码,下载下来直接可以用(防止用户刷新,重复提交数据) 有十分清晰的操作步骤,和注释,代码也封装的很好,我经常用
有时候在WEB中点击按钮提交时,不希望用户刷新页面,和前进
防止二次提交
防止提交 在用struts2.0标签开发...在点击"提交"后,我们通常会弹出一个提示信息的页面,用户此时有可能会按f5刷新当前提交的action,从而将多个相同的数据保存到了后台数据库,并且造成了潜在的安全危险! 避免重复提交呢?
1、页面上按钮是服务器控件,现在刷新页面要防止按钮事件重复执行 您可能感兴趣的文章:ASP.NET中防止页面刷新造成表单重复提交执行两次操作asp.net 处理F5刷新页面重复提交页面的一个思路
本篇文章主要介绍了网页如何防止刷新重复提交与如何防止后退的解决方法,具体如下: 提交后禁用提交按钮(大部分人都是这样做的) 如果客户提交后,按F5刷新怎么办? 使用Session 在提交的页面也就是数据库处理之前: ...
如何防止刷新页面重复提交呢? PHP防止刷新重复提交,通过不断刷新(Refresh or Reload)表单提交页面,可以重复提交表单内容,可以利用 PHP 的 Session 来避免这一点,Session 保存在服务器端,在 PHP 过程中改变 ...
之前看过别人防刷新的方法,是让页面刷新或返回上一步让页面过期,这里介绍一种另类的方法,使用Session来处理。 实现原理: 由于刷新提交表单,实际上提交的就是上一次正常提交的表单,所以我们只要做一个标志,...
恶意刷新就是不停的去刷新提交页面,导致大量无效数据了,下面我们来总结一下php 防止恶意刷新页面方法总结
防止表单重复提交。判断是新打开的页面还是刷新的页面 判断是新打开的页面还是刷新的页面
服务器端避免表单的重复提交,利用同步令牌来解决重复...如果不相等,则提示用户已经提交过表单,同时产生一个新的令牌值,保存到session中,当用户重新访问提交数据页面时(刷新页面),将新产生的令牌值作为隐藏输入域的值.
当用户将信息提交到服务器,服务器响应采用forward方式调转到下一个页面后,此时地址栏中显示的是上个页面的URL,若刷新当前页面,浏览器会将再次提交用户先前输入的数据,就会再次出现表单重复提交的问题。...
其中有一篇是来自MSDN上的一种解决方法: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/BedrockASPNET.asp 它是通过重新定义 System.Web.UI.Page 类来实现加载页面时,是“刷新”...
方法有二,总结如下: 第一方法: 直接在CS代码里敲: Response.Buffer = true;...执行过postback操作的web页面在刷新的时候,浏览器会有“不重新发送信息,则无法刷新网页”的提示,若刚刚执行的恰好是往数据