投票系统如何防止一个用户多次投票

最简单的方法就是在用户投票以后记录下一定信息,每次投票时就检测这个特定信息是否存在。实现的方法我想到了3种,具体如下:
1,用Page.Session;
private void saveInSession()
{
if(Page.Session["ok"]==null)
{
Vote();
Page.Session["ok"]=1;
}
else
{
NoVote();
}
}
2,用Request.Cookies;
private void saveInCookie()
{
if(Request.Cookies["ok"]==null)
{
Vote();
HttpCookie cookie = new HttpCookie("ok");
cookie.Values.Add("visit","1");
cookie.Expires = DateTime.Now.AddYears(1);
Response.AppendCookie(cookie);

}
else
{
NoVote();
}
}
3,用Page.Cache;
private void saveInCache()
{
if(Page.Cache["ok"]==null)
{
Vote();
Page.Cache["ok"]=1;
}
else
{
NoVote();
}
}
要做复杂点也可以把用户的ip记录下来,写入数据库,在投票前先查看数据库是否有投票记录,这个方法就复杂多了,但是可以避免前几种用户关掉页面又进入可以投票的问题。
若大家还有什么更好的方案请回帖。
上一篇:UnboundLocalError: local variable ‘xxx‘ referenced before assignment


下一篇:Netflix创始人:我不要求996,一样市值1万亿