ホームページ > バックエンド開発 > PHPチュートリアル > CIDR サブネットに IP アドレスが含まれていることを確認するにはどうすればよいですか?

CIDR サブネットに IP アドレスが含まれていることを確認するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-18 19:35:03
オリジナル
715 人が閲覧しました

How to Verify IP Address Inclusion in a CIDR Subnet?

CIDR サブネットへの IP アドレスの包含の確認

IPv4 アドレスが指定された CIDR サブネット内にあるかどうかを確認するには、次のような簡単な方法があります。次の手順:

長整数への変換:

  • ip2long() 関数を使用して、IP アドレスとサブネット範囲の両方を長整数に変換します。

サブネット マスクの導出:

  • サブネット マスクが明示的に指定されていない場合 (/xx)、デフォルト マスク /32 を想定します。
  • 32 からマスク長を引いた値に 1 秒の左シフトを適用して、サブネット マスクを計算します。

ビットごとの比較:

  • 実行IP 長整数とサブネット マスクの間のビット単位の AND 演算。
  • 結果がサブネットの長整数と等しいかどうかを確認します。

実装:

次の PHP 関数はこのロジックをカプセル化します:

<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;
    return ($ip & $mask) == $subnet;
}</code>
ログイン後にコピー

以上がCIDR サブネットに IP アドレスが含まれていることを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート