PHP 检查或过滤IP地址的简单示例

前端之家收集整理的这篇文章主要介绍了PHP 检查或过滤IP地址的简单示例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
PHP 中检查或过滤IP地址的实现代码感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧!
你可以通过增加一个配置文件,然后将需要禁止的一些 IP 地址通过一定规则添加配置文件中,在程序初始化的时候,读取配置文件中的每个规则,然后通过本文提供的方法去检查当前访问的客户端 IP 地址是否存在于这些规则中,如果存在,则拒绝提供服务。


<?PHP 
/** 
* PHP 中检查或过滤 IP 地址 
* 
* 支持 IP 区间、CIDR(Classless Inter-Domain Routing)及单个 IP 格式 
* 
* @param string $network 网段,支持 IP 区间、CIDR及单个 IP 格式 
* @param string $ip 要检查的 IP 地址 
* @return boolean 
* @arrange 512-笔记网: jb51.cc
*/ 
function netMatch($network,$ip) { 
$network = trim($network); 
$ip = trim($ip); 
$result = false; 
// IP range : 174.129.0.0 - 174.129.255.255 
if (false !== ($pos = strpos($network,"-"))) { 
$from = ip2long(trim(substr($network,$pos))); 
$to = ip2long(trim(substr($network,$pos+1))); 
$ip = ip2long($ip); 
$result = ($ip >= $from and $ip <= $to); 
// CIDR : 174.129.0.0/16 
} else if (false !== strpos($network,"/")) { 
list ($net,$mask) = explode ('/',$network); 
$result = (ip2long($ip) & ~((1 << (32 - $mask)) - 1)) == ip2long($net); 
// single IP 
} else { 
$result = $network === $ip; 
} 
return $result; 
} 
// 174.129.0.0 - 174.129.255.255 
var_dump(netMatch(' 174.129.0.0 - 174.129.255.255 ','174.129.1.31')); // True
var_dump(netMatch(' 174.129.0.0/16 ','174.139.1.31')); // False 
var_dump(netMatch(' 174.129.1.32 ','174.129.1.31')); // False 

/***   来自编程之家 jb51.cc(jb51.cc)   ***/

由于中国使用的大多数都是动态 IP 地址,所以通过 IP 地址限制访问具有一定的局限性,使用的时候需要谨慎,但是对于应急限制访问来说,还是非常有用的。

猜你在找的PHP相关文章