用cookies怎么实现限制同一ip在三小时内只允许查询三次?求asp代码
展开全部
<%
ip=Request.ServerVariables("HTTP_X_FORWARDED_FOR")
if ip="" then ip=request.servervariables("REMOTE_ADDR")
if request.cookies("S"&ip)="" then
Response.Cookies("S"&ip).Expires=DateAdd("h",3,Now())
response.cookies("S"&ip)=1
else
response.cookies("S"&ip)=cint(request.cookies("S"&ip))+1
end if
if request.cookies("S"&ip)>3 then
response.write"同一IP三小时内不允许查询三次。"
response.end
end if
%>
说明一下:以上判断直接用IP地址前面加一个字母来做COOKIES的名称,这样就减少了好多好多的判断;第一次查询的时候记录COOKIES的值为1,然后第二次和第三次只需要加1即可,如果COOKIES的值大于3时,就提示“同一IP三小时内不允许查询三次。”。原理很简单(即三个小时后该COOKIES自然的失效,然后用户如果又刷新或查询时,又重新记录该COOKIES,值为1,后面的同上!)
相信你懂得……
ip=Request.ServerVariables("HTTP_X_FORWARDED_FOR")
if ip="" then ip=request.servervariables("REMOTE_ADDR")
if request.cookies("S"&ip)="" then
Response.Cookies("S"&ip).Expires=DateAdd("h",3,Now())
response.cookies("S"&ip)=1
else
response.cookies("S"&ip)=cint(request.cookies("S"&ip))+1
end if
if request.cookies("S"&ip)>3 then
response.write"同一IP三小时内不允许查询三次。"
response.end
end if
%>
说明一下:以上判断直接用IP地址前面加一个字母来做COOKIES的名称,这样就减少了好多好多的判断;第一次查询的时候记录COOKIES的值为1,然后第二次和第三次只需要加1即可,如果COOKIES的值大于3时,就提示“同一IP三小时内不允许查询三次。”。原理很简单(即三个小时后该COOKIES自然的失效,然后用户如果又刷新或查询时,又重新记录该COOKIES,值为1,后面的同上!)
相信你懂得……
更多追问追答
追问
为什么我重启浏览器之后,就又可以查询了呢???
追答
多测试一下看看~~理论是不可能的~
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效...
点击进入详情页
本回答由Storm代理提供
展开全部
<%
Dim i, t
i = 0
t = Time()
If Request.Cookies("QueryCounter").HasKeys Then
If IsNumeric(Request.Cookies("QueryCounter")("Counter")) AND IsDate(Request.Cookies("QueryCounter")("Time")) Then
i = CInt(Request.Cookies("QueryCounter")("Counter"))
t = CDate(Request.Cookies("QueryCounter")("Time"))
End If
End If
If i <= 3 AND DateDiff("n", t, Time()) <= 180 Then
Response.Cookies("QueryCounter")("Counter") = i + 1
Response.Cookies("QueryCounter")("Time") = t
Response.Cookies("QueryCounter").Expires = DateAdd("h",3,Now())
'你的查询语句
Else
Response.Write "同一ip在三小时内只允许查询三次"
End If
%>
本例没有检查IP,因为检查IP好像有点多余了.
Dim i, t
i = 0
t = Time()
If Request.Cookies("QueryCounter").HasKeys Then
If IsNumeric(Request.Cookies("QueryCounter")("Counter")) AND IsDate(Request.Cookies("QueryCounter")("Time")) Then
i = CInt(Request.Cookies("QueryCounter")("Counter"))
t = CDate(Request.Cookies("QueryCounter")("Time"))
End If
End If
If i <= 3 AND DateDiff("n", t, Time()) <= 180 Then
Response.Cookies("QueryCounter")("Counter") = i + 1
Response.Cookies("QueryCounter")("Time") = t
Response.Cookies("QueryCounter").Expires = DateAdd("h",3,Now())
'你的查询语句
Else
Response.Write "同一ip在三小时内只允许查询三次"
End If
%>
本例没有检查IP,因为检查IP好像有点多余了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询