IP auf Echtheit überprüffen

Gray

Erfahrenes Mitglied
Hallo, beim suchen hab ich leider nichts passendes gefunden.

Ich bräuchte nen Script, was kontroliert ob eine IP echt ist also ob die Zahllen zwischen 0 und 255 liegen und 3 Punkte enthalten sind.

So in der Art:

62.155.444.232 = Falsch
62.155.222.232 = Richtig
 
am besten würde das mit einer Regular Expression gehen, wobei ich dafür auf die schnelle keine Idee habe da ich bei sowas nicht so der Held bin, aber Tim Comanns (corrected by himself: ein m und zwei n, nicht andersrum *g*) hat vor kurzem ein recht gutes Tut dazu bereitgestellt, da kannst du mal schauen.
Ansonsten auf die "billig" -Variante, den String nach "." splitten und in jedem Array-Teil überprüfen ob er vorhanden und wenn ja zwischen 0 und 255 liegt.
Wobei um es wirklich richtig zu machen, du wissen müsstest was für ein Netz es ist, da z.B. eine Broadcast oder die Netzadresse keine gültige Adresse für einen Host ist.
Des weiteren ist eine 0 zwar keine gültige Nummer für Stelle 1 und 4, aber für 2 und 3 usw... sind halt einige Soderfälle die Berücksichtigt werden müssen.
 
PHP:
if(preg_match("#[0-2]*[0-5]{2}\.[0-2]*[0-5]{1,2}\.[0-2]*[0-5]{1,2}\.#",$ip))
 echo "Die IP : ".$ip." ist gültig.";
else
 echo "Die IP : ".$ip." ist ungültig.";

Ungetestet, aber müsste gehen.
Jona
 
Leider geht das nicht Jona.

Erstens schließt dein Pattern zweistellige Elemente im ersten Viertel aus und des weiteren, wäre nach deinem Muster ein 192 nicht möglich, weil du auf den letzten zwei stellen nur 0-5 zulässt ;)

Ich denke, das ist in einem regulären Ausdruck kaum unterzubringen.

Ich würde einfach den String via explode(".",$ip) zerlegen und testen, ob die einzelnen Elemente zwischen 1 und 254 liegen.
 
Ich würde einfach den String via explode(".",$ip) zerlegen und testen, ob die einzelnen Elemente zwischen 1 und 254 liegen.

Hmm, und wenn man 192.168.0.1 verwendet? Die IP ist gültig, würde aber dennoch als ungültig betrachtet werden. Des weiteren liegt der Broadcast nur bei Standard-Subnet-Masken auf 255. Eine todsichere Methode wird es also nicht geben.

snuu
 
jo das war ja was ich anfangs meinte, dass man um es sicherer zu machen die Snetadresse kennen sollte um daran den Rest auszurechnen ;)
 
Neben der Frage, was es bringt, behaupte ich mal, dass es *nicht* möglich ist, seine IP zu fälschen. Wenn es doch einer zu stande bringt wird er allerdings mit sicherheit nicht so doof sein, und eine IP ausserhalb einer validen IP-Range nehmen! :-)

Edit: Notfalls den Host anpingen!
 
Zurück