ASP限制多段IP访问的问题,高分求助!
以下是网上搜索来的一个ASP限制IP访问的例子:
<%
ip_start= "192.168.1.1 "
ip_end= "192.168.1.254 "
ip_start_arr=split(ip_start, ". ")
ip_end_arr=split(ip_end, ". ")
ip_start_str= " "
ip_end_str= " "
ip_user_str= " "
for i=0 to 3
ip_start_str=ip_start_str&right(Cstr(formatnumber(Cint(ip_start_arr(i))/1000,3)),3)
ip_end_str=ip_end_str&right(Cstr(formatnumber(Cint(ip_end_arr(i))/1000,3)),3)
next
'测试客户端是否用代理
userip = Request.ServerVariables( "HTTP_X_FORWARDED_FOR ")
If userip = " " Then userip = Request.ServerVariables( "REMOTE_ADDR ")
ip_user_arr=split(userip, ". ")
for i=0 to 3
ip_user_str=ip_user_str&right(Cstr(formatnumber(Cint(ip_user_arr(i))/1000,3)),3)
next
if CDbl(ip_user_str)> CDbl(ip_end_str) or CDbl(ip_user_str) <CDbl(ip_start_str) then
response.write "超出访问范围 "
end if
%>
经测试,可用。但这段代码只能限一段IP,如何我要限多段IP访问(或者说允许多段IP访问),应该怎么写呢?
我是初学者,请大家多指教,别笑我哦!或者大家给个别的程序也行,谢谢!
------解决方案--------------------最简单的修改方法是把 IP段做为数组
IP(1,1)= "192.168.1.1 "
IP(1,2)= "192.168.1.254 "
IP(2,1)= "192.168.2.1 "
IP(2,2)= "192.168.2.254 "
------解决方案--------------------不用这么麻烦吧
获取userip,这是一个字符串,你要限制的ipstr也是一个字符串,所以只要这个ip不是以ipstr开头的就不禁止,所以:
dim ipstr
ipstr=new array(10)
ipstr(0)= "191.123 "
ipstr(1)= "191.123 "
.....
ipstr(9)= "127.123.234 "
userip = Request.ServerVariables( "HTTP_X_FORWARDED_FOR ")
If userip = " " Then userip = Request.ServerVariables( "REMOTE_ADDR ")
if (instr(ipstr,userip)=1) then
response.write "你的ip被禁了! "
end if
------解决方案--------------------我以前IP前两段做区分段示例一下(如果只是用IP第一段来做限止那更容易)。
先把你允许的IP段放入一个字符串,用“,”(其它也行),如“125.124,15.4”
先取客户端IP(a.b.c.d),再用.分割,取前两段,处理成a.b,再进行instr查找。
不用循环就可以解决。
如果客户端IP为(220.212.12.11)
<%
ip= "220.212.12.11 "
'设置被禁IP段
fip= "224.125,47.84,46.25 "
useip=split(ip, ". ")
if instr(fip,useip(0)& ", "&useip(1))> 0 then
response.write( "你的IP被限止! ")
else
response.write( "你可以正常浏览网页! ")
end if
%>