注册 登录
编程论坛 ASP技术论坛

请教:设置一个IP只能投5人的票。谢谢(希望可以大家直接写出代码来哦)

无剑侠 发布于 2010-07-26 20:42, 457 次点击
一个用户,或者一个IP只能投5个人。。。然后对一个候选人只能投一次。
我目前的代码只能实现一个IP对同一候选人只能投一次,但是可以投无数次个候选人。。我现在想设置为只能投5个候选人。
<%  Dim VoTeid,HostUrl,Zuid
 VoTeid = Int(CHECKSTR(trim(Request.QueryString("VoTeid"))))
 HostUrl=Request.ServerVariables("HTTP_REFERER")
 Zuid=Cint(session("nihaoID"))
 if VoTeid="" then
  Call Alert ("不允许值为空,请选择后提交!","index.asp")
 End if
 Rem 获取IP
 function getIP()
 getIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
 If getIP = "" Then
 getIP = Request.ServerVariables("REMOTE_ADDR")
 end if
 end function
 Rem 投票开关
 If power=0 then
  Call Alert ("投票评选活动已关闭!","index.asp")
 End if
 function ZhiIP(vid,ip)
  sql="Select * from nihao where Voteid="&vid&" and Hostip='"&ip&"'"
  Set rs=conn.execute(sql)
  if not rs.eof then
   ZhiIP=true
  else
   ZhiIP=false
  end if
 end function
 if ZhiIP(Voteid,getIP())=true then
  Call Alert ("你的IP:"&getIP()&"已经给这位选手投票,不能继续投票!","index.asp")
 end if
 sql="update nihao set Amio=Amio+1 where id="&Voteid
 conn.execute(sql)
 sql="insert into zhi_rui_v_Vo(Voteid,Userid,Hostip,HostAd,HostUl,AddTime) values("&Voteid&","&Zuid&",'"&getIP()&"','"&dlwz&"','"&HostUrl&"',#"&now()&"#)"
 conn.execute(sql)
 Call Alert("投票成功,感谢您宝贵的一票!","index.asp")
%>
7 回复
#2
无剑侠2010-07-26 21:54
就没人回答吗?
#3
gupiao1752010-07-26 23:32
发这些文件不够吧,文件不够的地方测试的人都得自己建立的!没有数据库要自己建,没有连接代码要自己改。累啊。

先给你提个思路吧,你既然可以做到,实现一个IP对同一候选人只能投一次,那么可以在原表上多加一个累积字段,每投一个,该字段加1,到5的时候自动停止投票权利即可!
#4
魏兴耀2010-07-27 07:54
版主的回答不好吗?
#5
hams2010-07-27 09:05
看这个选题,我的思路是:

数据表
投票人IP--被投人ID
201.103.222.1--5
201.103.222.1--8
……

每次投票前,搜索两个数据进行验证
1、这个IP的记录行数,判断是5还是其它的都可以
2、这个IP的被投票人ID,如果和正在投票的相同则报错

另外还可增加一个时间字段,因为很多IP是动态的,一般我们设同一天同一IP不能重复投票就可以了,不必永远不能投,所以,设时间字段,过期之后可以删掉。

再一个,个人认为,还是结合COOKIES来做比较好。
#6
无剑侠2010-07-27 10:28
还是不太明白。。。我是想如果大家能够直接帮我写一段话,我直接插入到我的代码里就好啦。。谢谢啊。。我技术实在太烂。。。因为这个投票系统也是我从网上下载的。
#7
无剑侠2010-07-27 17:35
顶一下。。。
#8
hams2010-07-28 09:01
思路已经说得很清楚了,自己学习一下吧。
1