//获取客户端IP地址
        String UserIP = Request.UserHostAddress.ToString();        //获取名为userIP的Cookie对象
        HttpCookie oldCookie = Request.Cookies["userIP"];        //创建HttpCookie类型的对象并为它分配名称为userIP
        HttpCookie newCookie = new HttpCookie("userIP");
        //为Cookie的子项赋值,即将客户端IP地址赋给Cookie的子项,并将其命名为IPaddress
        newCookie.Values.Add("IPaddress", UserIP);
        //设置Cookie的失效期
        newCookie.Expires = DateTime.Now.AddMinutes(1);
        //将该Cookie添加到Cookies集合中
        Response.Cookies.Add(newCookie);        //判断该Cookie对象是否存在
        if (oldCookie != null)
        {
            //从Cookie中获取客户端IP地址            String userIP = oldCookie.Values["IPaddress"];
            if (UserIP.Trim() == userIP.Trim())
            {
                Jscript.ShowAndRefresh(this, "你已经投过票了!");
                return;
            }
            else
            {
                //不存在
                smileModel.UpdateClickHot(ID);
                Jscript.ShowAndRefresh(this, "投票成功!");
                return;//Response.End();
            }
        }
        else
        {
            //不存在
            smileModel.UpdateClickHot(ID);
            Jscript.ShowAndRefresh(this, "投票成功!");
            return;//Response.End();
        }
这里是我的一个Cookie投票的代码   现在我要限制一个IP只能投100次  怎么判断是否有100次了

解决方案 »

  1.   

    int Count = 0;
    if (oldCookie != null)
      {
      //从Cookie中获取客户端IP地址  String _Count= oldCookie.Values["Count"];
    if(Count!=null && Count!= "") Count = Int32.Parse(Count);
    没投一次取得 Count 然后+1
    Count++;
    在写入
    oldCookie.Values.Add("Count", Count);Response.Cookies.Add(oldCookie )
      

  2.   

    9494.
    不过,你的过期时间太短了。没啥用。
    应该把过期时间弄长一点
    另外,IP设防没用。我们都是动态IP
      

  3.   

    思路就是,每次都取得上次的次数,然后加1,上面说的就是思路啊另外就是
    newCookie.Expires = DateTime.Now.AddDays(100);
      

  4.   

    COOKIE IP验证
      

  5.   

    if(Count!=null && Count!= "") Count = Int32.Parse(Count);
    这个地方有误呀
      

  6.   

    投票时先判断是否投过票,没投过 则写入cookie,记录次数为1
    如果投过票直接读取次数并加1。判断是否超过100,不用记录IP没什么用。只要投过就会写入cookie 不管他的IP是多少。
      

  7.   

    这样
    String UserIP = Request.UserHostAddress.ToString();
        int Count = 0;
        //获取名为userIP的Cookie对象
        HttpCookie oldCookie = Request.Cookies["userIP"];    //判断该Cookie对象是否存在
        if (oldCookie != null)
        {
          //从Cookie中获取客户端IP地址
          String _c = oldCookie.Values["Count"];
          int.TryParse(_c, out Count);
          String userIP = oldCookie.Values["IPaddress"];
          if (UserIP.Trim() == userIP.Trim())
          {
            //判断次数
            if (Count > 100)
            {
              Jscript.ShowAndRefresh(this, "你已经超过次数了!");
            }
            else
            {
              Count++;
              oldCookie.Values["Count"] = Count.ToString();
              Response.Cookies.Add(oldCookie);
              smileModel.UpdateClickHot(ID);
              Jscript.ShowAndRefresh(this, "投票成功!");
            }
            
          
            return;
          }
          else
          {
            Count++;
            oldCookie.Values["IPaddress"] = UserIP;
            oldCookie.Values["Count"] = Count.ToString();
            //不存在
            smileModel.UpdateClickHot(ID);
            Jscript.ShowAndRefresh(this, "投票成功!");
            return;//Response.End();
          }
        }
        else
        {      //创建HttpCookie类型的对象并为它分配名称为userIP
          HttpCookie newCookie = new HttpCookie("userIP");
          //为Cookie的子项赋值,即将客户端IP地址赋给Cookie的子项,并将其命名为IPaddress
          newCookie.Values.Add("IPaddress", UserIP);
          newCookie.Values.Add("Count", "0");
          
          //设置Cookie的失效期
          newCookie.Expires = DateTime.Now.AddYears(1);
          //将该Cookie添加到Cookies集合中
          Response.Cookies.Add(newCookie);      //不存在
          smileModel.UpdateClickHot(ID);
          Jscript.ShowAndRefresh(this, "投票成功!");
          return;//Response.End();
        }
      

  8.   

    你需要在使用oldCookie 的地方先先判断下
    if(oldCookie != null )再操作oldCookie ,
    上面只是大致的思路,自己不能改改吗?