PHP läuft nicht wie vorher...



  • Hallo! Ich arbeite schon länger mit OmniHTTPd und war bisher sehr zufrieden. Vor einiger Zeit nun habe ich mir die neue Version geladen und installiert. Eine Weile nicht mehr in PHP programmiert, musste ich ein Programm bugfixen. Auf einmal ging da so gut wie gar nix mehr. Nach einiger Analysezeit musste ich feststellen, daß die Variablen eines Formulares durch POST nicht mehr ankamen. Würde ich nun $var= $_POST["var"] schreiben, wäre es ok. Ich frage mich nun woran das liegt. An der neueren PHP-Version? Am neueren Omni? Oder an was ganz anderes? Kann mir da jemand helfen?



  • Ist seit PHP 4.2.2 eine Standardeinstellung. Es gibt eine Einstellung in der php.ini die irgendwas wie import_globals oder so heißt, bedeutet nichts anderes, als dass z.B. alle post/get-Variablen etc. als normale globale Variablen zur verfügung stehen. Da manche Scripte sich aber durch geschickte get-Requests austricksen lassen (man ruft einfach zusätzlich noch mit Parametern auf die internen Variablennamen entsprechen) hat PHP ab Version 4.2 diese Funktion standardmäßig deaktiviert. Es gibt nun 4 Möglichkeiten für dich.

    1. Du änderst deine php.ini, so dass register_globals = on ist. Damit hast du dads Problem auf dienem Websrever gelöst, könntest aber Probleme bekommen.

    2. Du baust in dein Script einen der Wrkarounds von http://de.php.net/manual/en/printwn/security.registerglobals.php (unten bie den Kommentaren) ein.

    3. Du benutzt die Funktion import_request_variables (s.a. http://www.php.net/manual/en/function.import-request-variables.php)

    4. Du schriebst dein Script so um, dass es nur noch die Variablen $_COOKIE, $_REQUEST etc. benutzt

    Hoffe das hilft 🙂



  • Ja danke. Hat mir schon geholfen. Ich überleg nur noch, welchen Weg ich nun gehe. Am besten wäre wohl, alles über $_COOKIE und $_REQUEST usw zu steuern. Nur: Erstens ist es ein haufen Arbeit, zweitens hoffe ich, daß ich nichts vergesse und drittens hoffe ich, daß die nächste PHP-Version sich nicht nochmal anders entscheidet 🙄


Anmelden zum Antworten