中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

建阳市| 桦川县| 玛曲县| 曲阜市| 刚察县| 凤冈县| 若羌县| 广西| 门源| 张掖市| 神池县| 娱乐| 柳州市| 临沭县| 皮山县| 汉源县| 左权县| 拉萨市| 邵武市| 广元市| 裕民县| 和林格尔县| 工布江达县| 阿尔山市| 泸州市| 马关县| 崇文区| 清丰县| 永川市| 合山市| 昂仁县| 香格里拉县| 霍州市| 库尔勒市| 巩留县| 黔西县| 贵阳市| 射阳县| 体育| 灵山县| 定襄县|