只能让每个客户端投一次,用COOKIE记录该客户端是否已经投票,如果投过怎么辨认出已经投过,这在编程中应该怎样进行处理,希望知道的高手能指点指点!

解决方案 »

  1.   

    记录IP (指不需要用户登陆的)
    如果是需要登陆后才能投票的(则记录COOKIES)
     定义一个变量用来存储已投过票的
    dim Record as string
    Record+=id(IP) & ","//以逗号分割
    每次投票前先判断
    if id(ip) in Record then //伪码 可以通过split(Record,",")分割,在定义一个数组(不过当数据量很大时,开销也很大)遍历数组
    //投过票了
    else
    //可以投票
    Record+=id(IP)
    end if
      

  2.   

    HttpCookie voteCookie=Request.Cookies["SSNUSER"];
    if(voteCookie!=null)
    {
    return;
    }
    else
    {
    voteCookie=new HttpCookie("SSNUSER");
    voteCookie.Path="/";
    voteCookie.Expires=DateTime.Now.AddDays(1);
    Response.Cookies.Add(voteCookie);
    }
      

  3.   

    记录IP是个好方法,不过我想比如一台已经访问他的机子上面就保存一个COOKIE,那么下次如果有去访问的话,如果已经存在一个这样的COOKIE那么就不能在访问,这样可以实现吗?
      

  4.   

    HttpCookie voteCookie=Request.Cookies["SSNUSER"];
    if(voteCookie!=null)
    {
    return;
    }
    else
    {
    voteCookie=new HttpCookie("SSNUSER");
    voteCookie.Path="/";
    voteCookie.Expires=DateTime.Now.AddDays(1);
    Response.Cookies.Add(voteCookie);
    }
    这个就能实现我前面说到的那个想法吗?
      

  5.   

    用ip控制就象xrascal(横刀夺爱) 说的一样,网吧里一人投了票,其他人就投不了了,
    用cookies控制要讲究技巧,不是投过票就写入cookies里一个值,那样的话,万一过段时间其他人又要投票就投不进了。不过可以采用往cookies里写入时间值,判定多少时间以后可以再次投票,一般人投过后再投投不进就算了,基本可以避免造票,采用数据库登陆后记录投票情况来限定每个用户只能投一次,作弊的办法就是多注册几个帐号。个人认为投票系统用cookies写时间的方法比较好,也简单,投票也方便,防作弊的效果也比较好。