Hallo,
wie kann ich am einfachsten und am schonensten überprüfen, ob eine bestimmte IP in einer bestimmten IP-Range ist?
Ich habe dabei ca. 200-300 Ranges in einer DB gespeichert und muss diese auf eine IP hin ueberprüfen.
Als einfachstes dachte ich mir, ich könnte die IP-Grenzen (der Ranges) in 32-Bit-Zahlen umwandeln und die IP auch und dann ueber einfache größer/kleiner-Beziehungen feststellen, ob ein Fall eintritt:
// -------------------------------------------------------------------------------
// User muss gecheckt werden
$ip = abs(ip2long($ip));
$query = 'SELECT ip_start, ip_end FROM al_iprange WHERE ('.$ip.' >= ip_start AND '.$ip.' <= ip_end)';
if ($debug_mode) { echo '<span class="debug">'.$query.'</span><br><br>'; }
$db_query = mysql_query($query);
if (mysql_num_rows($db_query) > 0) {
// In einer verbotenen Range...
echo '<h1>RANGE verboten</h1>';
} else {
echo '<h1>RANGE erlaubt</h1>';
}
// -------------------------------------------------------------------------------
Aber irgendwie scheint das nicht zu klappen :( Kann mich jemand korrigieren, oder mir eine einfachere und/oder bessere Lösung nennen?
Vielen Dank im Voraus und schöne Grüße
Alexander Rehbein