- A+
所属分类:PHP
有时候需要判断某个IP是否在某个范围内,对于有划分子网的网络,一眼是很难判断的,需要计算子网起止与结束地址,对于学过CCNA知识的未必会算的清楚。看代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php /** * 判断IP是否在某个网络内 * 运维生存时间 * site:www.ttlsa.com * @param $ip * @param $network * @return bool */ function ip_in_network($ip, $network) { $ip = (double) (sprintf("%u", ip2long($ip))); $s = explode('/', $network); $network_start = (double) (sprintf("%u", ip2long($s[0]))); $network_len = pow(2, 32 - $s[1]); $network_end = $network_start + $network_len - 1; if ($ip >= $network_start && $ip <= $network_end) { return true; } return false; } ?> |
这种方法可以当做一个常用函数来使用。啰嗦一句,对于要把IP地址存入数据库的情况下,强烈建议先用ip2long进行转换后再存入数据库。
如需转载请注明出处:http://www.ttlsa.com/html/2751.html

微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~