Maik: Stringüberprüfung!

Hi Leutz,

hab folgendes Problem: Ich bekomme über ein Formular eine IP zugesendet. Diese ist in der Variable $_POST[theip]. Ich möchte nun im Code überprüfen ob dies auch tatsächlich eine richtige IP ist. Sprich 3 Punkte und 4 Zahlen, bzw. 127.0.0.1. Wie lässt sich das am besten anstellen?

Muss ich da tatsächlich alles spliten und auf Nrn. checken oder habt ihr ne andere Idee?

Mike

  1. Nabend Mike,

    $_POST[theip]

    Du meinst sicherlich $_POST['theip'] bzw. $_POST["theip"], oder hast du die Konstante theip irgendwo definiert?

    Wie lässt sich das am besten anstellen?

    Erste Idee: Ein regulärer Ausdruck kann das bewerkstelligen. Nur kenne ich mich mit denen nicht wirklich aus; aber es gibt ja zum Glück viele Dokus dazu. Somit weiß ich auch nicht, ob du damit auch überprüfen kannst, ob dort zwischen den Punkten nur eine max. 3-stellige Zahl steht oder ob du gleichzeitig auch überprüfen kannst, ob diese in dem zulässigen Bereich ist.
    Falls letzteres nicht geht, wäre wohl das Aufsplitten in ein Array und das Überprüfen der einzelnen Elemente für sich eine Lösung.

    Bis denne,

    1. Hi!

      Nabend Mike,

      $_POST[theip]
      Du meinst sicherlich $_POST['theip'] bzw. $_POST["theip"], oder hast du die Konstante theip irgendwo definiert?

      Korrektur: Man kann die Elemente eines assoziativen Arrays auch ohne '' oder "" ansprechen-

      Regular Expressions are the way to go!

      Alles was du brauchst, findest du auf http://www.php.net/manual/de/function.ereg.php

      Lies halt auch die Kommentare, da sind sogar ein paar IP-Beispiele drinnen.

      glg
      Andi

      1. Hallo Andi, hallo Maik

        $_POST[theip]
        Du meinst sicherlich $_POST['theip'] bzw. $_POST["theip"], oder hast du die Konstante theip irgendwo definiert?
        Korrektur: Man kann die Elemente eines assoziativen Arrays auch ohne '' oder "" ansprechen

        Diese Aussage ist falsch.

        Kennst Du Dieter Nuhr? http://www.nuhr.de/data/karte3_takeaway.gif ;)

        1. http://www.php.net/manual/de/language.types.array.php#language.types.array.foo-bar
        2. http://www.php.net/error_reporting

        Lies halt auch die Kommentare, da sind sogar ein paar IP-Beispiele drinnen.

        Solltest Du vielleicht auch mal. ;) Zitat: "Anmerkung:  Die Funktion preg_match(), die eine zu Perl kompatible Syntax regulärer Ausdrücke verwendet, ist häufig die schnellere Alternative zu ereg()."

        Einen funktionierenden RegExp gibt es zB in den Kommentaren zu http://de3.php.net/manual/de/function.ip2long.php

        Gruss, Thoralf

        --
        Sic Luceat Lux!
      2. hi,

        $_POST[theip]
        Du meinst sicherlich $_POST['theip'] bzw. $_POST["theip"], oder hast du die Konstante theip irgendwo definiert?
        Korrektur: Man kann die Elemente eines assoziativen Arrays auch ohne '' oder "" ansprechen-

        man "kann" - und wenn man den fehler-level von php "liberal" genug eingestellt hat, wird man noch nicht einmal mit der meldung "gennervt", dass dies falsch ist.

        php ist in der lage, diesen _fehler_ in der mehrzahl der fälle selbst zu erkennen und zu korrigieren - aber ein programmierfehler bleibt es.

        fakt ist und bleibt aber, dass theip für php eine konstante ist, "theip" oder 'theip' hingegen ein string.

        sofern du dir die konstante theip also am anfang deines scriptes definiert und mit einem wert belegt hast, ist $_POST[theip] korrekt - ansonsten aber nicht.

        gruss,
        wahsaga