任意格式,屏蔽任意IP,IP地址段


支持多个通配符,任意通配符位置,可屏蔽IP段和具体IP地址

 1 None.gif ' By zkxp 2/15/2006 http://zkxp.cnblogs.com 
 2 None.gif' 受屏蔽IP地址(段)集合,星号为通配符,通常保存于配置文件中。
 3 None.gif Const  BadIPGroup  =   " 192.168.1.*|202.68.*.*|*.12.55.34|185.*.96.24|127.*.0.1|192.168.0.1 "
 4 None.gif
 5 None.gif If  IsForbidIP(BadIPGroup)  =   True   Then
 6 None.gif    Response.Write(GetIP  & " IP地址禁止访问 " )
 7 None.gif    Response.End()
 8 None.gif End   If
 9 None.gif
10 None.gif
11 None.gif ' ****************************************************************
12 None.gif' 参数vBadIP:要屏蔽的IP段,IP地址集合,用|符号分隔多个IP地址(段)
13 None.gif' 返回Bool:True用户IP在被屏蔽范围,False 反之
14 None.gif' ****************************************************************
15 None.gif Function  IsForbidIP(vBadIP)
16 None.gif     Dim  counter, arrIPPart, arrBadIP, arrBadIPPart, i, j
17 None.gif    
18 None.gif    arrBadIP  =   Split (vBadIP,  " | " )    
19 None.gif    arrIPPart  =   Split (GetIP(),  " . " )
20 None.gif    
21 None.gif     For  i  =   0   To   UBound (arrBadIP)         
22 None.gif        counter  =   0
23 None.gif        arrBadIPPart  =   Split (arrBadIP(i),  " . " )        
24 None.gif         For  j  =   0   To   UBound (arrIPPart)             
25 None.gif             If (arrBadIPPart(j))  =   " * "   or   Cstr (arrIPPart(j))  =   Cstr (arrBadIPPart(j))  Then             
26 None.gif                counter  =  counter  +   1             
27 None.gif             End   If             
28 None.gif         Next         
29 None.gif         If  counter  =   4   Then             
30 None.gif            IsForbidIP  =   True
31 None.gif             Exit   Function
32 None.gif         End   If         
33 None.gif     Next
34 None.gif    IsForbidIP  =   False
35 None.gif End Function
36 None.gif
37 None.gif ' ***************
38 None.gif' 返回客户IP地址
39 None.gif' ***************
40 None.gif Function  GetIP()
41 None.gif     Dim  IP
42 None.gif    IP  =  Request.ServerVariables( " HTTP_X_FORWARDED_FOR "
43 None.gif     If  IP  =   ""   Then  IP  =  Request.ServerVariables( " REMOTE_ADDR " )
44 None.gif    GetIP  =  IP
45 None.gif End Function


 

另,网上看到的另一个用加减乘除来判断的,有点取巧,单很不灵活,且代码似乎还有问题。仅供参考。

 

None.gif < %
None.gif
function  IP2Num(sip)
None.gif
dim  str1,str2,str3,str4
None.gif
dim  num
None.gifIP2Num
= 0
None.gif
if   isnumeric ( left (sip, 2 ))  then
None.gifstr1
= left (sip, instr (sip, " . " ) - 1 )
None.gifsip
= mid (sip, instr (sip, " . " ) + 1 )
None.gifstr2
= left (sip, instr (sip, " . " ) - 1 )
None.gifsip
= mid (sip, instr (sip, " . " ) + 1 )
None.gifstr3
= left (sip, instr (sip, " . " ) - 1 )
None.gifstr4
= mid (sip, instr (sip, " . " ) + 1 )
None.gifnum
= cint (str1) * 256 * 256 * 256 + cint (str2) * 256 * 256 + cint (str3) * 256 + cint (str4) - 1
None.gifIP2Num 
=  num
None.gif
end   if
None.gif
end function
None.gif
None.gif
function  Num2IP(nip)
None.gifiip1 
=   int (nip / 256 / 256 / 256 )
None.gifiip2 
=   int ((nip - iip1 * 256 * 256 * 256 ) / 256 / 256 )
None.gifiip3 
=   int ((nip - iip1 * 256 * 256 * 256 - iip2 * 256 * 256 ) / 256 )
None.gifiip4 
=   int ((nip - iip1 * 256 * 256 * 256 - iip2 * 256 * 256 - iip3 * 256 mod   256 )
None.gifiip0 
=  iip1  & " . " &  iip2  &   " . "   & iip3  & " . " &  iip4
None.gifNum2IP 
=  iip0
None.gif
end function
None.gif
None.gifuserIPnum 
=  IP2Num(Request.ServerVariables( " REMOTE_ADDR " ))
None.gif
None.gif
if  userIPnum  >  IP2Num( " 192.168.3.0 " and  userIPnum  <  IP2Num( " 192.168.3.255 " then
None.gifresponse.write (
" <center>此IP被禁止</center> " )
None.gifresponse.end
None.gif
' 页面ASP解释结束
None.gif
end   if
None.gif%
>
None.gif显示内容
None.gif
posted on 2006-02-15 12:14 堕落的卖猪贩 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/zkxp/archive/2006/02/15/330964.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值