日期:2014-05-17  浏览次数:20850 次

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
%>