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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM