Im Bereich der Netzwerkkonfiguration ist die Feststellung, ob eine IP-Adresse in ein bestimmtes CIDR-Subnetz fällt, eine häufige Aufgabe. Dieser Artikel stellt eine unkomplizierte Methode vor, um dies mithilfe rudimentärer integrierter Funktionen zu erreichen.
Der Algorithmus basiert auf der Konvertierung sowohl der IP-Adresse als auch des CIDR-Subnetzbereichs in lange Ganzzahlen mithilfe von ip2long( ) Funktion. Anschließend wird die Subnetzmaske entsprechend der /xx-Notation im CIDR-Bereich berechnet.
Der letzte Schritt besteht darin, eine bitweise „Und“-Operation zwischen IP und Subnetzmaske durchzuführen. Wenn das Ergebnis mit dem Subnetz übereinstimmt, kann bestätigt werden, dass sich die angegebene IP-Adresse im angegebenen Subnetz befindet.
Der folgende Code stellt eine Implementierung des oben genannten Algorithmus bereit:
<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>
Diese Funktion kann wie folgt verwendet werden:
<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>
Dieser Code gibt aus:
You're in the 10.2 subnet You're in the 10.2 subnet
Das obige ist der detaillierte Inhalt vonWie kann überprüft werden, ob eine IP-Adresse zu einem CIDR-Subnetz gehört?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!