用cookies怎么实现限制同一ip在三小时内只允许查询三次?求asp代码

 我来答
老刀正能量
2011-11-19 · TA获得超过2011个赞
知道大有可为答主
回答量:1487
采纳率:0%
帮助的人:1540万
展开全部
<%
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 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效... 点击进入详情页
本回答由Storm代理提供
缓步莫迟疑C
2011-11-19 · TA获得超过1.1万个赞
知道大有可为答主
回答量:6217
采纳率:73%
帮助的人:6505万
展开全部
<%
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好像有点多余了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式