Martin aus Wien: $_POST

Hallo zusammen,

was muss in der PHP Konfiguration eingestellt werden, damit der Wert von <input type="text" name="var"> nicht automatisch in die Variable $var geschrieben wird sondern nur in $_POST['var']?

Mein Provider hat dies anscheinend geändert und jetzt funktionieren Scripts auf meiner Site, die vorher funktioniert haben, nicht mehr, und ich muss jede $var auf $_POST['var'] ändern.

Gruß und Dank

Martin

  1. Hallo Martin,

    vermutlich hat Dein Provider aus Sicherheitsgründen
    register_globals ausgeschaltet.

    LG

    1. Danke!

      Martin

  2. Lieber Namensvetter aus Wien,

    was muss in der PHP Konfiguration eingestellt werden, damit der Wert von <input type="text" name="var"> nicht automatisch in die Variable $var geschrieben wird sondern nur in $_POST['var']?

    dazu muss man register_globals in der php.ini deaktivieren (auf 'off' setzen).

    Mein Provider hat dies anscheinend geändert und jetzt funktionieren Scripts auf meiner Site, die vorher funktioniert haben, nicht mehr, und ich muss jede $var auf $_POST['var'] ändern.

    Das spricht für deinen Provider. Er hat also inzwischen auch erkannt und eingesehen, dass seine Kunden er mit register_globals mehr Schaden als Nutzen haben. Dass einige ihre Scripte nachbessern müssen, weil sie aus Bequemlichkeit vorher eine gefährliche Abkürzung genommen haben, nimmt er dabei gern in Kauf.

    So long,
     Martin

    --
    Ist die Katze gesund,
    freut sich der Hund.
    1. Danke. Nur - eine Mitteilung könnten die schon machen, ich schau ja nicht jeden Tag nach, ob meine Scripts noch funktionieren.

      Allerdings ist mir nicht ganz klar: Was ist so gefährlich an register_globals?

      Ich bringe grad meinem Neffen bei, was ich halt so über PHP weiß, und in allen Tutorials, die ich gefunden habe, wird ganz selbstverständlich davon ausgegangen, dass ein Formularinput <input ... name="var"> im Script als $var ankommt.

      Gruß und Dank

      Martin

      1. Hallo,

        Nur - eine Mitteilung könnten die schon machen, ich schau ja nicht jeden Tag nach, ob meine Scripts noch funktionieren.

        das ist allerdings wahr. Einfach still und heimlich umstellen finde ich auch nicht okay.

        Allerdings ist mir nicht ganz klar: Was ist so gefährlich an register_globals?

        Die Einstellung bzw. das Feature ist an sich gar nicht gefährlich - wenn man beim Schreiben seiner Scripte sehr konsequent und diszipliniert vorgeht. Wenn man wirklich jede Eingabe von außen sorgfältig auf Plausibilität überprüft. Peinlich genau darauf achtet, dass man nie aus Versehen uninitialisierte Variablen verwendet. Bestimmt gibt es noch ein paar Sünden in der Art, die mir jetzt auf die Schnelle nicht einfallen.

        Denn mit register_globals kann schließlich jeder, der dein Script aufruft, Variablen mit beliebigen Namen und beliebigen Werten in deinem Code einschleusen. Wenn jetzt noch eine kleine Schlamperei im Script steckt, die normalerweise nicht auffällt, dann tut dein Script auf einmal Dinge, die du nie erwartet hättest. Und das kann unangenehm sein ... ;-)

        Ich bringe grad meinem Neffen bei, was ich halt so über PHP weiß, und in allen Tutorials, die ich gefunden habe, wird ganz selbstverständlich davon ausgegangen, dass ein Formularinput <input ... name="var"> im Script als $var ankommt.

        Ja, das war bis einschließlich PHP4 auch die Defaulteinstellung. Damals haben die PHP-Entwickler sich wohl noch nicht so sehr um solche möglichen Stolperfallen gekümmert. Das Bewusstsein dafür ist anscheinend erst mit PHP5 allmählich gekommen.

        So long,
         Martin  [der aus'm Schwobaländle]

        --
        Zum Glück ist alles nur halb so doppelt.
        1. echo $begrüßung;

          Ich bringe grad meinem Neffen bei, was ich halt so über PHP weiß, und in allen Tutorials, die ich gefunden habe, wird ganz selbstverständlich davon ausgegangen, dass ein Formularinput <input ... name="var"> im Script als $var ankommt.

          Ja, das war bis einschließlich PHP4 auch die Defaulteinstellung. Damals haben die PHP-Entwickler sich wohl noch nicht so sehr um solche möglichen Stolperfallen gekümmert. Das Bewusstsein dafür ist anscheinend erst mit PHP5 allmählich gekommen.

          Nein, das kam schon im Laufe der PHP4-Zeit, genauer: Seit Version 4.2.0 (April 2002) ist es per Default ausgeschaltet. Nur haben anscheinend die Supportanfragen viele Provider gestört, nachdem alte Scripte nicht mehr liefen, so dass es noch lange Zeit quasi-default auf eingeschaltet stand.

          Perspektivisch sollte man sich weder auf Register Globals noch auf Magic Quotes verlassen, denn beide Features wird es ab PHP 6 definitiv nicht mehr geben. Ersatz für Magic Quotes sind übrigens die in Version 5.2 eingeführten Filter Functions.

          echo "$verabschiedung $name";