主题:[讨论]难道没有人会吗,还是都过节去了!!
maoya
[专家分:50] 发布于 2007-09-30 13:49:00
<%
ip =Request.ServerVariables("REMOTE_ADDR")
if left(ip,10) = "10.22.56." or left(ip,10) = "10.22.57." or left(ip,10) = "10.22.58." then
response.redirect "jinru.asp"
else
response.write "出错信息"
response.end
end if
%>
以上代码只允许10.22.56 10.22.57 10.22.58 网段访问,那么如何实现
10.22.56 10.22.57 10.22.58 以及 10.22.49.138--10.22.49.160可以访问
亟待解决………………
回复列表 (共4个回复)
沙发
maoya [专家分:50] 发布于 2007-09-30 15:08:00
好了,搞定了,用的
num=cint(sip(0))*256*256*256+cint(sip(1))*256*256+cint(sip(2))*256+cint(sip(3))-1
方式
不过还是希望能给出这个方法的答案,谢谢各位了!!
板凳
QooOrange [专家分:90] 发布于 2007-10-04 04:02:00
我的注释写的不好,将就着看看吧,如果有不明白的地方再探讨
以下代码在我的电脑上测试成功了
PS:其实被允许的IP地址列表中的IP写法也可以这样,比如允许192.168.0.0到192.169.255.255,可以写成“192.168-169.*.*”,IP地址的四段中每一段都可以写作*或者一组IP。
<%
strIP = Request.ServerVariables("REMOTE_ADDR") '获取终端的IP地址
'设置允许访问的IP地址列表
'如果允许单个IP地址,格式为:192.168.0.1
'如果允许一个IP地址段,格式为:192.168.0.*或者192.168.*.*
'如果允许一组IP地址,格式为:192.168.0.5-100
arrValidIPList = Array("10.22.56.*","10.22.57.*","10.22.58.*","127.0.*.*","10.22.49.138-160")
'显示终端的IP地址
Response.Write("your IP is " & strIP)
Response.Write("<br />")
'判断IP地址是否被允许,这里的输出可以改成跳转
If funCheckIP(strIP,arrValidIPList) = True then
Response.Write("允许的IP") 'Response.Redirect("jinru.asp")
Else
Response.Write("拒绝的IP")
End If
'判断IP地址是否允许的函数
Function funCheckIP(str_IP,arr_ValidIPList)
arr_IP = Split(str_IP,".") '把终端的IP地址以小数点为间隔符分成数组
For i = 0 To Ubound(arr_ValidIPList) '循环遍历允许访问的IP地址列表
blnResult = True
arr_TempValidIP = Split(arr_ValidIPList(i),".") '把允许的IP地址列表中的当前值以小数点位间隔符拆分为数组
For j = 0 To 3 '循环比较4位IP段,如果有一位不符合则跳出循环,继续比对下一条
If funCheckSubNet(arr_IP(j),arr_TempValidIP(j)) = False Then
blnResult = False
Exit For
End If
Next
If blnResult = True Then '如果终端IP地址在被允许的IP地址列表中,则跳出循环不再检查,返回true
Exit For
End If
Next
funCheckIP = blnResult '返回最终的比对结果,true or false
End Function
'判断当前位的IP是否被允许的函数
Function funCheckSubNet(strSubIP,strValidSubIP)
If strValidSubIP = "*" Then '如果整个子网段被允许,则返回true
funCheckSubNet = True
ElseIf strSubIP = strValidSubIP Then '如果当前位的IP符合,则返回true
funCheckSubNet = True
ElseIf Instr(strValidSubIP,"-")>0 Then '如果当前位的允许列表中包含一组IP,则拆分比较
arrValidSubIP = Split(strValidSubIP,"-")
intValidOP_start = int(arrValidSubIP(0))
intValidOP_end = int(arrValidSubIP(1))
If int(strSubIP) >= intValidOP_start And int(strSubIP) <= intValidOP_end Then '以Int数值判断终端IP当前位是否在被允许的这组IP内
funCheckSubNet = True
Else
funCheckSubNet = False
End If
Else
funCheckSubNet = False
End If
End Function
%>
3 楼
maoya [专家分:50] 发布于 2007-10-09 18:01:00
2楼的,谢谢您了,高手啊,有什么不明白的再麻烦您,台感谢您了!!
我初学,水平太低,有什么问的不合适的地方请给与理解!!
4 楼
圪圪 [专家分:5150] 发布于 2007-10-10 17:41:00
maoya
这个ID好熟悉
我来回复