以往都是用Cookie来限制投票次数,不过那样不严谨,很容易避开它。最好还是专门用个数据表来存信息,然后和当前时间来比较

解决方案 »

  1.   

    建立一个一小时过期的服务器缓存,里面记录每个用户的投票数
    Dictionary<string, int> voteRec =new Dictionary<string,int>; 
    Cache.Add("voteRec", voteRec, DateTime.Now.AddHours(1));public void Vote(string userId, string ip, string voteto){
    var key = userId+ip+voteto;if (voteRec.Count(kv=>kv.Key.Contains(ip))>=3) return //每小时只能投3票 if (!voteRec.Contains(key)) voteRec[key] = 1; 
      else return; //不能多次给用户投票
    }