php如何判断IP地址是否在多个IP段内

  介绍

这篇文章主要介绍php如何判断IP地址是否在多个IP段内,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

php判断IP地址是否在多个IP段内的具体代码如下

IP.class。php

& lt; php ?   ,   class  Ip  {   ,/* *   ,,*,取IP   ,,*,@return 字符串   ,,*/public 才能;static  function 得到(),{   ,,,if  ($ _SERVER [& # 39; HTTP_CLIENT_IP& # 39;),,,, $ _SERVER [& # 39; HTTP_CLIENT_IP& # 39;] !=& # 39;未知# 39;),{   ,,,,,,,ip 美元;=,$ _SERVER [& # 39; HTTP_CLIENT_IP& # 39;];   ,,,,,},elseif  ($ _SERVER [& # 39; HTTP_X_FORWARDED_FOR& # 39;),,,, $ _SERVER [& # 39; HTTP_X_FORWARDED_FOR& # 39;] !=& # 39;未知# 39;),{   ,,,,,,,ip 美元;=,$ _SERVER [& # 39; HTTP_X_FORWARDED_FOR& # 39;];   ,,,,,},{else    ,,,,,,,ip 美元;=,$ _SERVER [& # 39; REMOTE_ADDR& # 39;];   ,,,,,}   ,,,,,return  $ ip;   ,,}   ,   ,/* *   ,,*,IP转成整形数的值   ,,*,@param  string  ip 美元;IP   ,,*,@return  int   ,,*/public 才能static  function  ipToInt (ip), {   ,,,ips 美元;=,爆炸(& # 39;强生# 39;美元ip);   ,,,if  (count ($ ips)==4), {   ,,,,,int 美元;=,ips[0]美元+ 256 * 256 * 256 * ips [1] * 256 * 256 + ips [2] * 256 + ips美元[3];,//根据IP, a, b, c类进行计算   ,,,},{else    ,,,,,//throw  new 例外(& # 39;ip  is 错误# 39;);   ,,,,,的工具::警报(& # 39;IP地址存在错误……& # 39;);,//一个工具类,弹出提示信息   ,,,}   ,,,return  int美元;   ,,}   ,   ,/* *   ,,*,判断IP是否在一个IP段内   ,,*,@param  string  startIp 美元;开始IP   ,,*,@param  string  endIp 美元;结束IP   ,,*,@param  string  ip 美元;IP   ,,*,@return 保龄球   ,,*/public 才能static  function  isIn (startIp美元,endIp美元,美元ip), {   ,,,start 美元;=,Ip: ipToInt ($ startIp);   ,,,最终获得美元=,Ip: ipToInt ($ endIp);   ,,,ipInt 美元;=,Ip: ipToInt ($ Ip);   ,,,result 美元;=,假;   ,,,if  (ipInt>美元;=$ start ,,, ipInt<美元;=$结束),{   ,,,,,result 美元;=,真的;   ,,,}   ,,,return 结果美元;   ,,}   ,   }   ,   ?在

IpRang.class。php

& lt; php ?   ,//将不同的IP段存储到数组中. .   ,   $ iprang=阵列(   数组才能(& # 39;222.243.159.1& # 39;,& # 39;222.243.159.255& # 39;),   数组才能(& # 39;10.1.1.1& # 39;,& # 39;10.1.1.255& # 39;)   );   祝辞;

测试。php

& lt; php ?   ,   require_once  & # 39; Tool.class.php& # 39;,,//工具类   require_once  & # 39; IP.class.php& # 39;;//IP类   require_once  & # 39; IpRang.class.php& # 39;;,//IP段范围   ,   $ ip =, IP:获得();,//获取IP地址   $ tag=& # 39; 1 & # 39;;   foreach ($ iprang  as  key 美元;=祝辞,美元值){   ,如果(! IP::型号(价值[0],美元,美元价值[1],美元IP)) {   继续才能;   ,其他}{   美元才能标记。=美元关键;   ,}   }   如果(mb_strlen(标签,美元& # 39;utf - 8 # 39;)==1) {   ,echo “& lt; script  src=https://www.yisu.com/zixun/'/iplookup/iplookup.php ?格式=js&ip=" $ ip。“‘类型=' text/javascript '> ”;//调用新浪IP接口   回声”