dclp FAQ

FAQ der Newsgroups de.comp.lang.php.*

 
  • Increase font size
  • Default font size
  • Decrease font size

Häufig benötigte Codeschnipsel

Wie kann ich prüfen, ob eine IP-Adresse in einem bestimmten Bereich liegt?

E-MailDruckenPDFLesezeichen anlegen: Du musst dich einloggen um ein Lesezeichen für diesen Beitrag anzulegen. Es wird deiner persönlichen Lesezeichenliste hinzugefügt.

PHP4 bietet die Funktion ip2long(), mit der man eine IP-Adresse in Punktschreibweise ("dotted quad") in die numerische Form umrechnen kann, was einen einfachen größer/kleiner-Vergleich erlaubt. Der Haken daran: Bei PHP beträgt der Maximalwert eines Integer-Typen etwas über 2 Milliarden (genau: 2.147.483.647, vorzeichenbehafteter 32-Bit-Wert), was für die Umrechnung von IP-Adressen nicht ausreicht; bei 127.255.255.255 ist Schluss, danach wechselt das Vorzeichen.

Wandelt man die IP dagegen in einen String um, gibt es dieses Limit nicht. Dann kann man einfach mittels if() oder strcmp() vergleichen:

if (ip2str($start) <= ip2str($ip)
    AND
    ip2str($ip) <= ip2str($ende))
...
 
function ip2str($ip) {
    $ip = preg_replace("/(\d{1,3})\.?/e",
                       'sprintf("%03d", \1)',
                        $ip);
    return (string)$ip;
}
Wie kann ich prüfen, ob eine IP-Adresse in einem bestimmten Bereich liegt?
http://www.php-faq.de/q-code-ip-bereich.html
 

dclp FAQ


Login