分类: 系统运维
2010-04-17 23:07:14
先说PHP的 :)
原帖:
php中限制ip段访问
在应用中用到写下的,如果大家有更好的写法,放出来一同分享!谢谢!!
$ 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;
}
?>
在蓝色经典找到的解答 也很不错:
代码如下:
----------------------------
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 if(ereg($ thenetip,$ ip_lib[$ i])){ $ allow=1; break; } } if ($ allow==1) { echo "验证通过"; } else { echo ""; } ?> -------------------------- 代码结束! 说明: 待自己建立test.ini文件 在这个文件里输入允许访问的IP段 如: 110.110.110 111.111.111 112.112.112 192.168.1 192.168.0 ... ... 等等 只需要输入前三位就行了 地址: 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)) if cint(allow1(i))=cint(ipstr(i)) then check(i)=true checkip=true exit for else if cint(ipstr(i)) 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)) 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 %>