回 帖 发 新 帖 刷新版面

主题:[讨论]难道没有人会吗,还是都过节去了!!

<%   
  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个回复)

沙发

好了,搞定了,用的
num=cint(sip(0))*256*256*256+cint(sip(1))*256*256+cint(sip(2))*256+cint(sip(3))-1 
方式

不过还是希望能给出这个方法的答案,谢谢各位了!!

板凳

我的注释写的不好,将就着看看吧,如果有不明白的地方再探讨
以下代码在我的电脑上测试成功了

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 楼

2楼的,谢谢您了,高手啊,有什么不明白的再麻烦您,台感谢您了!!
我初学,水平太低,有什么问的不合适的地方请给与理解!!

4 楼

maoya

这个ID好熟悉

我来回复

您尚未登录,请登录后再回复。点此登录或注册