用户投票需要登录吗?如果需要就记录登录者的相关信息
比如建立表vote,有如下字段
user
month
vote_num
程序判断流程为:
登录成功后看vote中有user没有,有就看当前月份与month是否相同,相同vote_num就加一,不相同就插入新的记录。如果vote_num>10给出提示
登录成功vote中没有此user,则插入新的记录

解决方案 »

  1.   

    session为啥不用?肯定比楼上各位的办法效率快,准确性高
      

  2.   

    注册用户的话就会用到session
    你说的用户指的是互联网用户还是你网站用户?
    如果是前者那么你很难准确控制一个月只投10票,因为用户ip会变
    如果指注册用户那么不用session或者cookie也比较难控制
    因为检查是否登录需要一个标记
      

  3.   

    让他登陆后才能投票。
    然后加个count字段,是记录投票记数的,还有加个时间字段$time(要转化为秒)
    每投票前if是不是本月超过10次,如是提示不能投票。
    不是count+1
      

  4.   

    可能只能通过用户注册,来记录和区别用户信息了.  session 只能记录一次登陆, Cookie 也不能绝对保证一个月时间.
      

  5.   

    你这个问题已经不是投票问题了吧   而是如何去认识客户机的问题了,一个月内我要能认识出客户机   如何认识?COOKIE --  你不用            用户注册 -  可采用          IP信息管理 -  存在问题       寻找客户机标志 -  光靠PHP好象不行(例如获取机器名,网卡MAC等唯一性的标志)但机器名可以相同啊...        因此我觉得你的要求的话采用用户注册是最符合的了(但用户可以注册好几个用户名)        建议你注册两样资料(用户名与EMAIL,EMAIL有效用户方可投票,同一个EMAIL只允许注册一次~,这样就尽可能的保证了数据的真实了,但副作用就是交互性麻烦多了,麻烦了客户了)
      

  6.   

    用IP应该最好!
    但是有一个BUG不能解决,像我这样使用拨号的ADSL上网,基本上IP每次都变! 不可信!
      

  7.   

    需要登陆才能投票,如果不行的话只有cookie,别的好像不行。
      

  8.   

    在一个月内最多只能投4票
    建立一个VOTE库:
    vote_user(网站会员)
    vote_starttime(投票开始时间)
    vote_cnt(投票次数)
    vote_enable(投票开关)
    vote_endtime(投票结束时间)
    会员只能在vote_starttime到vote_endtime这个月内才有效,这是一个判断条件,
    另外检查vote_cnt是不是大于10,如果大于10的话也无投票权了。
      

  9.   

    用户数大时,用COOKIE最好的解决办法。把数据保存在用户的机器上总比把数据存在自已的数据库上强吧?
      

  10.   

    hsq972(野人): 要是用户换了机器呢?  要是拨号上网呢? 怎么办?
      

  11.   

    将session存在数据库中,设置时间为30*24*3600。
    这里用到了phplib的数据库类。请注意包含进来。
    http://expert.csdn.net/Expert/topic/1719/1719531.xml?temp=.8255121