1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > PHP 中检查或过滤IP地址的实现代码【PHP】

PHP 中检查或过滤IP地址的实现代码【PHP】

时间:2019-02-12 19:06:17

相关推荐

PHP 中检查或过滤IP地址的实现代码【PHP】

后端开发|php教程

过滤,IP地址

后端开发-php教程

你可以通过增加一个配置文件,然后将需要禁止的一些 IP 地址通过一定规则添加到配置文件中,在程序初始化的时候,读取配置文件中的每个规则,然后通过本文提供的方法去检查当前访问的客户端 IP 地址是否存在于这些规则中,如果存在,则拒绝提供服务。

保修查询系统源码,ubuntu开机跳代码,红头爬虫黄白色,表格维护 php,广州seo专业lzw

<?php

/**

* PHP 中检查或过滤 IP 地址

*

* 支持 IP 区间、CIDR(Classless Inter-Domain Routing)及单个 IP 格式

* 整理:

* 参考:

* - {@link /manual/zh/function.ip2long.php#70055}

* - {@link /manual/zh/function.ip2long.php#82397}

*

* @param string $network 网段,支持 IP 区间、CIDR及单个 IP 格式

* @param string $ip 要检查的 IP 地址

* @return boolean

*/

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, 0, $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

?>

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

交警大队网站源码,vscode可新建目录吗,ubuntu.字体,tomcat服务路径修改,数据爬虫严打,php弹幕播放器,苏州seo网络推广优化价格,服装html网站模板下载,织梦装修公司网站模板lzw

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。