<% '获取访问者的地址 ip=Request.ServerVariables("REMOTE_ADDR") '允许的IP地址段为10.0.0.0~10.68.63.255 allowip1="10.0.0.0" allowip2="10.68.10.71" response.write checkip(ip,allowip1,allowip2) function checkip(ip,allowip1,allowip2) dim check(4) checkip=false ipstr=split(ip,".") allow1=split(allowip1,".") allow2=split(allowip2,".") if cint(allow1(0))>cint(allow2(0)) then '判断IP地址段是否合法 response.write "IP地址段出错!" exit function end if for i=0 to ubound(ipstr) if cint(allow1(i))<cint(allow2(i)) then if cint(allow1(i))=cint(ipstr(i)) then check(i)=true checkip=true exit for else if cint(ipstr(i))<cint(allow2(i)) then check(i)=true checkip=true exit for else if cint(ipstr(i))>cint(allow2(i)) then check(i)=false checkip=false exit for else check(i)=true checkip=true end if end if end if else if cint(allow1(i))>cint(ipstr(i)) or cint(allow1(i))<cint(ipstr(i)) then check(i)=false checkip=false if i<>ubound(ipstr) then exit for end if else check(i)=true end if end if next if (check(0)=true and check(1)=true and check(2)=true and check(3)=false) and (cint(allow2(2))>cint(ipstr(2))) then checkip=true end if end function %> ip限制函数 (www.Jojoo.net) 2001-12-12 (请双击自动滚屏观看,单击停止,再击..) 大家如果还有好的建议算法,就联系我!!:) '****************************** 'Function CheckIp(cInput_Ip,cBound_Ip) 'Created by qqdao, [email protected] 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, [email protected] 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 
|