2、每次用户投票时,搜索表是否存在该IP:
i、 如果不存在新增一条记录,
ii、否则判断访问次数是否大于3次:
1) 没有更新访问次数;
2)大于3次就return false;
3、弊端:当然这种情况不能避免使用代理来刷票的情况。
建议:用Nosql比较好,高并发,实时性好。
可以在数据库里加入一张表,记录投票人的IP,和设票次数,投票时,先作验证。在投票时,先获得用户IP,
在表中查出当前IP的记录,
如果为空,
则向数据库加入一条记录,投票成功
否则
判断当前IP已经投票次数
如果投票次数过大,提示投票失败
否则
更新数据库,把当前IP的投票次数加一,投票成功
这有个获取IP的函数。
Function getIP()
Dim strIPAddr
If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") >0 Then
strIPAddr = Request.ServerVariables("REMOTE_ADDR")
ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") >0 Then
strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1)
ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "") >0 Then
strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "")-1)
Else
strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
End If
getIP = Trim(Mid(strIPAddr, 1, 30))
End Function
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)