亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP判斷某個IP4是否屬于某一個IP段的方法

發布時間:2020-10-15 15:41:47 來源:億速云 閱讀:610 作者:小新 欄目:編程語言

小編給大家分享一下PHP判斷某個IP4是否屬于某一個IP段的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

                                                           

很多時候,我們需要做 IP 黑名單或者 IP 白名單,來對訪客進行限制,很常見的一種就是對同一 IP 段內的所有 IP 進行允許或限制,那么就我們就需要知道訪客 IP 是否屬于該 IP 段范圍內。本文僅記錄一下方法。

其實本文還有一個應用場景,就是通常存儲在數據庫中的 IP 地址都是 varchar 類型的,而如果采用 INT 類型來保存 IP ,則可以對數據庫起到優化的作用,當然這里只是針對 IP4 進行講解。

判斷一個 IP 是否屬于某一個 IP 段,思路就是將 IP 轉換成 int 類型的數值,然后進行比較。而在 PHP 中內置了 ip 和數值的互換的函數:ip2long($ip_addr) 和 long2ip($long)。

ip2long($ip_addr)中若 $ip_addr 不是有效的 IP 地址,則會返回 false,若是有效的 IP 地址,則會將其轉換為有符號 long 類型,而有些時候 IP 地址轉換后可能會超出有符號的 long 長度,這樣會導致出現負數。

long 類型是 4 個字節的,其有符號范圍是:2147483647 ~ -2147483648,無符號的范圍是:4294967295 ~ 0

而最大的 IP4 地址是:255.255.255.255,對應的數值是:4294967295,所以可以將其轉成無符號的數值。2147483647 數值對應的 IP 為:127.255.255.255,

long2ip(2147483647)所以 IP 地址在 0.0.0.0 至 127.255.255.255 范圍內的不會出現負數,而在 128.0.0.0 至 255.255.255.255 范圍內的會出現負數情況。

以下代碼給出了一個完整、正確的判斷指定 IP 是否屬于某 IP 段內的小例子。

$start_ip = "42.236.184.1";
$end_ip   = "42.236.184.255";
$ip = "42.236.184.128";
check_ip($ip,$start_ip,$end_ip);
function check_ip($ip,$start_ip,$end_ip)
{
$ip = get_ip2long($ip);
$start_ip = get_ip2long($start_ip);
$end_ip = get_ip2long($end_ip);
if($ip >= $start_ip && $ip <= $end_ip)
{
return true;
}
return false;
}
// decbin() 十進制轉二進制
// bindec() 二進制轉十進制。函數將一個二進制數轉換成 integer。可轉換的最大的數為 31 位 1 或者說十進制的 2147483647。PHP 4.1.0 開始,該函數可以處理大數值,這種情況下,它會返回 float 類型。
function get_ip2long($ip)
{
return bindec(decbin(ip2long($ip)));
//方法二:return sprintf('%u',ip2long($ip)); //%u:不包含正負號的十進制數
}

看完了這篇文章,相信你對PHP判斷某個IP4是否屬于某一個IP段的方法有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

张掖市| 南安市| 鲜城| 田阳县| 萝北县| 喀喇沁旗| 额尔古纳市| 丘北县| 华容县| 新宾| 卢龙县| 石城县| 新田县| 江达县| 佛坪县| 平安县| 墨玉县| 普兰县| 延长县| 锦屏县| 石嘴山市| 中卫市| 满洲里市| 西城区| 夹江县| 桐城市| 张家口市| 报价| 北碚区| 尤溪县| 五原县| 江安县| 克拉玛依市| 丹棱县| 延边| 确山县| 高雄县| 余姚市| 南江县| 兰西县| 张家港市|