求一个ASP.NET防刷新的代码(C#)

来源:百度知道 编辑:UC知道 时间:2024/06/27 23:52:56
大家帮帮忙,会员在看信息时候,每刷新一次金币都会补扣一次,如何能有效防止他刷新不扣金币???
我扣费的页面都是所有栏目共用的一个文件,只每个栏目的标题都在此页面显示详细内容,同时也扣相应的金币,每次刷新一次都会扣金币,谁能帮我解决一下

方法1.用数据库。每个页面对应一个惟一的ID,当他看到这个页面时,将扣币操作记录下来。每次打开页面前核对一下数据库,如果没有记录,则扣费,有则不扣,当然,可以做上日期限制,超过限定时辰还是要扣费的。
方法2.用Session或Cookie操作,打开页面时清空上一次操作记录,同时记录本次记录,每个记录有类似于这个的代码:page=a.aspx。每次载入Page_load事件读取page值,如果page等于当前页面值,则不操作,否则进行操作。
核心思想是这样。
你的意思是防重复扣币操作,也就是这样的了。
还有什么不懂的可以百度消息给我,最迟明天中午答复。

//-----------------------------------------
//补充回答:
protected void Page_Load(object sender, EventArgs e)
{
string page;
try
{
page=Request.Cookies["page"].ToString(); //获取cookie中存储的url值
}
catch
{
page="";
}
string strThisPage = Request.Url.ToString();//获取当前页地址
if (page.Equals(strThisPage))//如果cookie中的值和当前页相等,那么表示是刷新操作
{
//闪过
}
else
{
//执行扣费操作
response.cookie["page"]=strThisPage;
}
}

PS:这个方法只防止刷新,但不防止从此页转出后再回此页的扣费操作,毕竟cookie每次只记录一个值.

没有这样的办法

用AJAX技术局部刷新,不提交到服务器。

用AJAX技术局部刷新,不提交到服务器