ASP和PHP 限制IP段访问的方法

      让工作更简单 2006-4-2 9:7
先说PHP的 :)
原帖:http://www.comszy.com/bbs/showbbs.asp?bd=16&id=535&totable=1
php中限制ip段访问
在应用中用到写下的,如果大家有更好的写法,放出来一同分享!谢谢!!
<?php
$ userip = $ REMOTE_ADDR; //获得用户ip
$ userips = explode(".", $ userip);把获得的ip切开成数组

$ dataip = $ arr[ipt];//数据库中已定起始ip
$ dataips = explode(".", $ dataip);//把数据库中的限定的起始ip切开成数组

$ dataipw = $ arr[ipw];数据库中已定结速ip
$ dataipws = explode(".", $ dataipw);////把数据库中的限定的结束ip切开成数组


//比较ip的每一段
if ($ userips[0] == $ dataips[0] and $ userips[1] == $ dataips[1] and $ userips[2] == $ dataips[2] and $ userips[3] >= $ dataips[3] and $ userips[3] <= $ dataipws[3])
{echo "继续干想干的事!";
}
else
{echo "您的ip不符合,你不能**想干的事!";
exit;
}
?>


在蓝色经典找到的解答 也很不错:
代码如下:
----------------------------
<?php
class IP{ //获取客户IP地址
function getIpAdr(&$ ip){
$ ip1=getenv("HTTP_X_FORWARDED_FOR");
$ ip2=getenv("HTTP_CLIENT_IP");
$ ip3=getenv("REMOTE_ADDR");
if($ ip1&&$ ip1!='unknow')
$ ip=$ ip1;
else if($ ip2&&$ ip2!='unknow')
$ ip=$ ip2;
else if($ ip3&&$ ip3!='unknow')
$ ip=$ ip3;
else
$ ip='127.0.0.1';
}
}
function get_netip($ myip){ //只留客户IP地址的前三位
$ temp=explode(".",$ myip);
$ netip.=$ temp[0];
$ netip.=".";
$ netip.=$ temp[1];
$ netip.=".";
$ netip.=$ temp[2];
return $ netip;
}
$ filename="test.ini"; //定义操作文件
$ ip_lib=file($ filename); //读取文件数据到数组中
$ allow=0;
$ IP=new IP;
$ thisip="";
$ IP->getIpAdr(&$ thisip);
$ thenetip=get_netip($ thisip);

for($ i=0;$ i<count($ ip_lib);$ i++){
if(ereg($ thenetip,$ ip_lib[$ i])){
$ allow=1;
break;
}
}

if ($ allow==1)
{
echo "验证通过";
}
else {
echo "<script>location.href='Error.php';</script>";
}


?>

--------------------------
代码结束!

说明:
待自己建立test.ini文件
在这个文件里输入允许访问的IP段
如:

110.110.110
111.111.111
112.112.112
192.168.1
192.168.0
... ...
等等 
只需要输入前三位就行了

地址:http://www.blueidea.com/bbs/NewsDetail.asp?id=2364567


ASP的:
原地址:http://www.emagister.cn/cursos-asp%E9%99%90%E5%88%B6ip%E8%AE%BF%E9%97%AE-simcour-2194415.htm



<%
''获取访问者的地址
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 "禁止访问"
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
%>



标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}