PHP判断IP是否属于某个网段

Posted Ai~低调

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP判断IP是否属于某个网段相关的知识,希望对你有一定的参考价值。

第一种:

IP通过ip2long转换后可以进行比较。

 

<?php
/**
 * 判断IP是否在某个网络内 
 * @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;
}

  第二种:

//案例:判断192.168.1.127是否在 (192.168.1.1--192.168.1.255)的范围里面
 
$ip_start = get_iplong(‘192.168.1.1‘); //起始ip
$ip_end = get_iplong(‘192.168.1.255‘);//至ip
$ip = get_iplong(‘192.168.1.127‘);//判断的ip
//可以这样简单判断
if($ip>=$ip_start && $ip <=$ip_end){
    echo ‘IP在此范围内‘;
}else{
    echo ‘IP不在此范围‘;
}
/**
 * 将ip地址转换成int型
 * @param $ip  ip地址
 * @return number 返回数值
 */
function get_iplong($ip){
    //bindec(decbin(ip2long(‘这里填ip地址‘)));
    //ip2long();的意思是将IP地址转换成整型 ,
    //之所以要decbin和bindec一下是为了防止IP数值过大int型存储不了出现负数。
    return bindec(decbin(ip2long($ip)));
}

  

 

 

 

 

 

 

 

 

 

 

 

 

转载自:https://blog.csdn.net/jalin107/article/details/51396886https://blog.csdn.net/u010111874/article/details/51744253

以上是关于PHP判断IP是否属于某个网段的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点#golang判断一个网段是否属于另一个网段的子网

如何通过 C# 判断某个 IP 是否属于某IP段?

IP如何分网段 ?子网?如何判断一个子网有几台机?

IP编址

如何快速判断一个 IP 是不是属于中国大陆

如何判断两个ip地址是不是同一网段