不能重复刷新
代码
给你两个提示:
1)客户端检查:因为页面刷新window内置对象是会被销毁并且重建的,利用这个原理我们可以写出类似的代码:
<div id="test">
<script type="text/javascript">
document.write("您"+(window.name==""?"是":"已经不是")+"第一次开这个窗口!");
window.name="blueidea";
</script>
</div>
你设置一个全局变量什么的,检查频繁刷新的次数(比如超过5次被认为恶意刷新)。
2)服务器端的方法:
首先建立一个继承PAGE的类
using System;
namespace YZS.Web.UI
{
public class Page : System.Web.UI.Page
{
private bool _refreshState;
private bool _isRefresh;
public bool IsRefresh
{
get
{
return _isRefresh;
}
}
protected override void LoadViewState(object savedState)
{
object[] allStates = (object[]) savedState;
base.LoadViewState(allStates[0]);
_refreshState = (bool) allStates[1];
_isRefresh = _refreshState == (bool) Session["__ISREFRESH"];
}
protected override object SaveViewState()
{
Session["__ISREFRESH"] = _refreshState;
object[] allStates = new object[2];
allStates[0] = base.SaveViewState();
allStates[1] = !_refreshState;
return allStates;
}
}
}
在页面类从public class MYtest : YZS.Web.UI.Page继承,然后在页面中可通过调用
if(IsRefresh)
//刷新
else
您可以自行修改代码,计数控制是否恶意刷新。
1)客户端检查:因为页面刷新window内置对象是会被销毁并且重建的,利用这个原理我们可以写出类似的代码:
<div id="test">
<script type="text/javascript">
document.write("您"+(window.name==""?"是":"已经不是")+"第一次开这个窗口!");
window.name="blueidea";
</script>
</div>
你设置一个全局变量什么的,检查频繁刷新的次数(比如超过5次被认为恶意刷新)。
2)服务器端的方法:
首先建立一个继承PAGE的类
using System;
namespace YZS.Web.UI
{
public class Page : System.Web.UI.Page
{
private bool _refreshState;
private bool _isRefresh;
public bool IsRefresh
{
get
{
return _isRefresh;
}
}
protected override void LoadViewState(object savedState)
{
object[] allStates = (object[]) savedState;
base.LoadViewState(allStates[0]);
_refreshState = (bool) allStates[1];
_isRefresh = _refreshState == (bool) Session["__ISREFRESH"];
}
protected override object SaveViewState()
{
Session["__ISREFRESH"] = _refreshState;
object[] allStates = new object[2];
allStates[0] = base.SaveViewState();
allStates[1] = !_refreshState;
return allStates;
}
}
}
在页面类从public class MYtest : YZS.Web.UI.Page继承,然后在页面中可通过调用
if(IsRefresh)
//刷新
else
您可以自行修改代码,计数控制是否恶意刷新。