首頁 > 後端開發 > php教程 > 如何驗證IP位址是否屬於CIDR子網路?

如何驗證IP位址是否屬於CIDR子網路?

Linda Hamilton
發布: 2024-10-18 19:32:03
原創
597 人瀏覽過

How to Verify if an IP Address Belongs to a CIDR Subnet?

驗證 CIDR 子網路內的 IP 包含

在網路設定領域,決定 IP 位址是否屬於特定 CIDR 子網路是一項常見任務。本文介紹了一種使用基本內建函數來完成此操作的簡單方法。

方法

演算法依賴使用 ip2long( 將 IP 位址和 CIDR 子網路範圍轉換為長整數) ) 功能。隨後,計算與 CIDR 範圍中的 /xx 表示法對應的子網路遮罩。

最後一步涉及在 IP 與子網路遮罩之間執行位元「與」運算。如果結果與子網路匹配,則可以確認所提供的 IP 位址位於指定的子網路內。

實現

下面的代碼提供了上述算法的實現:

<code class="php">function cidr_match($ip, $range)
{
    list ($subnet, $bits) = explode('/', $range);
    if ($bits === null) {
        $bits = 32;
    }
    $ip = ip2long($ip);
    $subnet = ip2long($subnet);
    $mask = -1 << (32 - $bits);
    $subnet &= $mask; // Adjust subnet alignment if necessary
    return ($ip & $mask) == $subnet;
}</code>
登入後複製

此函數可以按如下方式使用:

<code class="php">$ips = array('10.2.1.100', '10.2.1.101', '10.5.1.100', '1.2.3.4');

foreach ($ips as $IP) {
    if (cidr_match($IP, '10.2.0.0/16') == true) {
        print "You're in the 10.2 subnet\n";
    }
}</code>
登入後複製

此程式碼將輸出:

You're in the 10.2 subnet
You're in the 10.2 subnet
登入後複製

以上是如何驗證IP位址是否屬於CIDR子網路?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板