asp只能用一个IP登陆代码 着急~~~~~~~~在线等

本人想做一个网站,登录后台时只可根据我在数据库里设定的IP访问.如何在在登录的时候验证其访问IP,与数据库里对比.有则通过.无则返回... 本人想做一个网站,登录后台时只可根据我在数据库里设定的IP访问.如何在在登录的时候验证其访问IP,与数据库里对比.有则通过.无则返回 展开
 我来答
zjcn5205
2010-01-13 · TA获得超过321个赞
知道小有建树答主
回答量:250
采纳率:0%
帮助的人:432万
展开全部
给你几个我自己写的函数,好好看看就知道怎么用了,很强大哦。
如果你想简单判断单个IP(假设是202.106.18.52)可以这么写:
Dim uIP,OK
uIP = getUserFullIP()
OK = checkIP(uIP, "202.106.18.52")

'*******************************************
' 检测IP的合法性,仅支持ipv4,宽容度很高
'*******************************************
Function isIP(ip)
Dim result
Dim RegExpObj
Set RegExpObj=new RegExp
RegExpObj.Pattern="^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$"
result=RegExpObj.test(ip)
Set RegExpObj=nothing
isIP=result
End Function
'*******************************************
' 获得用户IP
'*******************************************
Function getUserIP()
Dim u
u = getUserFullIP()
'隐藏最后一位
if u<>"" then
u = Left(u, InStrRev(u,"."))&"*"
else
u = "*.*.*.*"
end if
getUserIP = u
End Function
Function getUserFullIP()
Dim u
u = Request.ServerVariables("http_x_forwarded_for")
if not isIP(u) then
u = Request.ServerVariables("REMOTE_ADDR")
end if
getUserFullIP = u
End Function
Function getAgentIP()
Dim a
a = ""
if Request.ServerVariables("http_x_forwarded_for")<>"" then
a = Request.ServerVariables("REMOTE_ADDR")
end if
getAgentIP = a
End Function
'**************************************************
' 检查IP是否在指定IP范围内
' IP范围表示方法
' 1、独立ip
' 2、ip段,中间用~连接
' 3、模式,支持?*两种模糊匹配符
' 4、取反符号^,可以搭配前三种模式使用
' 例如: 192.168.0.1,192.168.0.3~192.168.0.5,192.168.1.*,^192.168.1.1
'***************************************************
Function checkIP(aIP, ipRange)
Dim ips, isNeg, hit, i, n, ipArr, check
ipArr = Split(ipRange, ",")
n = Ubound(ipArr)
hit = false
for i=0 to n
'逻辑允许或不允许
ips = ipArr(i)
isNeg = false
if Left(ips,1)="^" then
isNeg = true
ips = Mid(ips, 2)
end if
' 命中之后,只检测非允许字段
if (hit and isNeg) OR not hit then
check = checkIPRange(aIP, ips)
if check and not isNeg then
hit = true
elseif check and isNeg then
checkIP = false
Exit Function
end if
end if
next
checkIP = hit
End Function
'**********************
' 检测IP段/模式
' 无组合模式,无取反模式
'**********************
Function checkIPRange(aIP, ipRange)
Dim mode, tArr, sIP, eIP, iIP, ipRegTxt, RegExpObj, ok
mode = 1
if Instr(ipRange,"~")>0 then mode=2
Select Case mode
Case 1:
ipRegTxt = Replace(Replace(Replace(ipRange, "?", "\d"), "*", "\d*"), ".", "\.")
Set RegExpObj = new RegExp
RegExpObj.Pattern= ipRegTxt
RegExpObj.IgnoreCase = True
ok = RegExpObj.Test(aIP)
Set RegExpObj = nothing
Case 2:
tArr = Split(ipRange, "~", 2)
sIP = IP2Num(tArr(0))
eIP = IP2Num(tArr(1))
iIP = IP2Num(aIP)
ok = false
if (sIP-iIP)*(eIP-iIP)<=0 then ok = true
End Select
checkIPRange = ok
End Function
'**********************
' 将IP转化为数字
'**********************
Function IP2Num(ByVal aIP)
Dim num, i, ipArr
ipArr = Split(aIP, ".", 4)
num = 0
For i = 0 To 3
num = num + Cint(ipArr(i)) * (256 ^ (3 - i))
Next
IP2Num = num
End Function
'**********************
' 将数字转化为IP
'**********************
Function Num2IP(ByVal num)
Dim aIP, temp, i
aIP = ""
For i = 3 To 0 Step -1
temp = Int(num / (256 ^ i))
aIP = aIP & temp & "."
num = num - (temp * (256 ^ i))
Next
Num2IP = Left(aIP, Len(aIP) - 1)
End Function
Storm代理
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效... 点击进入详情页
本回答由Storm代理提供
380051468
2010-01-13 · TA获得超过800个赞
知道小有建树答主
回答量:947
采纳率:0%
帮助的人:614万
展开全部
Function GetRealIP()
GetRealIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
IF(GetRealIP = "")THEN GetRealIP = Request.ServerVariables("REMOTE_ADDR")
End Function
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式