ASP中限制IP函数详解

王朝asp·作者佚名  2006-11-24
宽屏版  字体: |||超大  

'******************************

'Function CheckIp(cInput_Ip,cBound_Ip)

'Created by qqdao, qqdao@263.net 2001/11/28

'说明:首先需要根据;号循环,然后判断是否含有"-",如果有则进行拆分处理,最后判断是否在范围内

'参数: cInput_Ip,代检查的ip

'cBound_Ip,给定的范围格式为,单个ip,和范围ip,范围ip最后使用”-“分割,如果是“*”则必须放到最后一位

'每个范围后添加":ALLOW"表示允许登陆,添加":REFUSE"表示拒绝登陆。多个范围用”;“隔开

'例如192.168.1*.*:ALLOW;192.168.1.1:ALLOW;192.168.1.1-10:REFUSE"

'返回值: true/false

'更新:2001/12/05 支持ALLOW,REFUSE支持’*‘,不想对?支持,因为和*差不多

'******************************

function CheckIp(cInput_Ip,cBound_Ip)

dim cSingle_Ip,cTemp_IP,cStart_IP,cEnd_Ip

CheckIp = false

cSingle_Ip=split(cBound_Ip,";")

for i=0 to ubound(cSingle_Ip)

if Instr(cSingle_Ip(i),"REFUSE") <> 0 then “就是拒绝了

cTemp_IP = left(cSingle_Ip(i),instr(cSingle_Ip(i),":")-1)

if Instr(cTemp_IP,"*") <> 0 then “是宽范围

cStart_IP = left(cTemp_IP,instr(cTemp_IP,"*")-1)

if left(cInput_Ip,len(cStart_IP))=cStart_IP then

CheckIp = false

exit function

end if

end if

if Instr(cTemp_IP,"-") = 0 then

cStart_IP = cTemp_IP

cEnd_Ip = cTemp_IP

else

cStart_IP = left(cTemp_IP,instr(cTemp_IP,"-")-1)

cEnd_Ip = left(cStart_IP,InStrRev(cStart_IP,".")-1)+"."+mid(cTemp_IP,instr(cTemp_IP,"-")+1)

end if

if Ip2Str(cInput_Ip)>=Ip2Str(cStart_IP) and Ip2Str(cInput_Ip)<=Ip2Str(cEnd_Ip) then

CheckIp = false

exit function

end if

elseif Instr(cSingle_Ip(i),"ALLOW") <> 0 then “允许

cTemp_IP = left(cSingle_Ip(i),instr(cSingle_Ip(i),":")-1)

if Instr(cTemp_IP,"*") <> 0 then “是宽范围

cStart_IP = left(cTemp_IP,instr(cTemp_IP,"*")-1)

if left(cInput_Ip,len(cStart_IP))=cStart_IP then

CheckIp = true

end if

end if

if Instr(cTemp_IP,"-") = 0 then

cStart_IP = cTemp_IP

cEnd_Ip = cTemp_IP

else

cStart_IP = left(cTemp_IP,instr(cTemp_IP,"-")-1)

cEnd_Ip = left(cStart_IP,InStrRev(cStart_IP,".")-1)+"."+mid(cTemp_IP,instr(cTemp_IP,"-")+1)

end if

if Ip2Str(cInput_Ip)>=Ip2Str(cStart_IP) and Ip2Str(cInput_Ip)<=Ip2Str(cEnd_Ip) then

CheckIp =true

else

CheckIp =false

end if

end if

next

end function

'******************************

'Function Ip2Str(cIp)

'Created by qqdao, qqdao@263.net 2001/11/28

'参考动网ip算法

'参数:cIp ip地址

'返回值: 转换后数值

'******************************

function Ip2Str(cIp)

Dim str1,str2,str3,str4

Dim cIp_Temp

if cIp="127.0.0.1" then cIp="192.168.0.1"

str1=left(cIp,instr(cIp,".")-1)

cIp_Temp=mid(cIp,instr(cIp,".")+1)

str2=left(cIp_Temp,instr(cIp_Temp,".")-1)

cIp_Temp=mid(cIp_Temp,instr(cIp_Temp,".")+1)

str3=left(cIp_Temp,instr(cIp_Temp,".")-1)

str4=mid(cIp_Temp,instr(cIp_Temp,".")+1)

if isNumeric(str1)=0 or isNumeric(str2)=0 or isNumeric(str3)=0 or isNumeric(str4)=0 then

else

Ip2Str=cint(str1)*256*256*256+cint(str2)*256*256+cint(str3)*256+cint(str4)-1

end if

end function

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有