判断ip地址,限制投票功能代码

 

很多投票比赛等,都需要用到限制IP,于是用投票来演示下限制IP。以下用到两种,个人能力有限,都有欠缺。
<%
'===IP限制开始

name1=request("name")
'以下获取投票者IP
Function getIP()
getIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If getIP = "" Then getIP = (Request.ServerVariables("REMOTE_ADDR"))
End Function

'通过session来判断是否已经投过票。
    If Session("tp")="yes" Then
 Response.write("<script language='javascript'>alert('您已经投票,请稍后再来投票!');location='index.asp';</script>")
 Response.End()
    End If
'通过数据库记录ip来判断是否投过票,以下比较时间间隔较小时,请将以上session判断去掉,否则会受session影响
    Set rs2=Server.CreateObject("ADODB.RecordSet")
    rs2.open "Select * from Tp where pid="&pid&" and ip='"&getIP&"' and datediff('n',addtime,now())<5",conn,1,3    

'判断addtime-now的时间是不是小于5分钟,注意n,即比较分钟。
'如果要更换这里限制的时间,关于datediff用法请参考:http://www.mykdx.com/asp/aspjc/vbscript/200807/357.shtml

 If not(rs2.eof and rs2.bof) Then '如果上面数据库查询语句有结果,证明,在数据库里面有小于5分钟的记录。
       Response.Write "<script>alert('你已经投过票了!');location='index.asp';</script>"
       Response.End
    Else
    rs2.addnew 
       rs2("ip")=getIP       '记录IP
       rs2("addtime")=now()  '记录当前时间
    rs2("name")=name1     '记录你想记录的信息,如投票人填写的姓名
    rs2.update
   End If
   rs2.close
   Set rs2=nothing
   conn.execute("delete from Tp where datediff('h',addtime,now())>=1")
'清除时间间隔大于1小时的记录。


'===IP限制结束
set rs_tp=server.CreateObject("ADODB.RecordSet")
sql_tp="select * from bisaitable where id="&pid
rs_tp.open  sql_tp , conn,1,1
if rs_tp("sh")=1 then  '检查是不是正常比赛选手
   sql="update Vote set ps=ps+1 where id="&pid
   conn.execute(sql)
   Session("tp")="yes"
else
   Response.Write "<script>alert('该选手还未参与到现阶段投票选手内!');location='index.asp';</script>"
   Response.End
end if
%>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值