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

最简单的方法就是在用户投票以后记录下一定信息,每次投票时就检测这个特定信息是否存在。实现的方法我想到了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记录下来,写入数据库,在投票前先查看数据库是否有投票记录,这个方法就复杂多了,但是可以避免前几种用户关掉页面又进入可以投票的问题。
若大家还有什么更好的方案请回帖。

【本文章出自博客园深蓝居,转载请注明作者出处,如果您觉得博主的文章对您有很大帮助,欢迎支付宝(studyzy@163.com)对博主进行打赏。】
原文地址:https://www.cnblogs.com/studyzy/p/65468.html