Olaf: HTTP_POST_VARs fehlen in PHP5

Hallo zusammen,

mit einem Formular form.php frage ich Benutzerdaten ab und übergebe sie mit POST an auswertung.php.

auswertung.php fragt nun die übergebenen Daten per HTTP_POST_VAR ab. Das hat bis jetzt immer gut funktioniert. Jetzt aber wurde auf einem unserer Server ein PHP Upgrade von Ver. 4.3 auf 5 eingespielt. Leider gibt es jetzt ein Problem. Ich habe ein wenig rumprobiert und
festgestellt, dass alle HTTP_POST_VARs, die von form.php kommen, unter PHP 5 leer sind.

Die Verwendung von HTTP_POST_VARs wird zwar nicht mehr empfohlen, stattdessen $_POST, müssten die HTTP_POST_VARs aber nicht trotzdem zur Verfügung stehen?

Dank & Gruss

Olaf

  1. Hallo Olaf!

    Die Verwendung von HTTP_POST_VARs wird zwar nicht mehr empfohlen, stattdessen $_POST, müssten die HTTP_POST_VARs aber nicht trotzdem zur Verfügung stehen?

    Ich beglückwünsche Deinen Provider, dass er endlich den richtigen Schritt getan hat und das Scripten auf den Systemen sicherer gemacht hat.

    Baue Deine Scripte um und initialisiere alle Variablen.

    Schönen Gruß

    Afra

  2. echo $begrüßung;

    Ich habe ein wenig rumprobiert und festgestellt, dass alle HTTP_POST_VARs, die von form.php kommen, unter PHP 5 leer sind.

    Sie werden nicht nur leer sein, vielmehr werden sie gar nicht mehr vorhanden sein. Beim Entwickeln von PHP-Skripten empfiehlt es sich immer, das error_reporting auf E_ALL zu stellen, damit PHP das Nichtvorhandensein von Variablen nicht stillschweigend ignoriert.

    Die Verwendung von HTTP_POST_VARs wird zwar nicht mehr empfohlen, stattdessen $_POST, müssten die HTTP_POST_VARs aber nicht trotzdem zur Verfügung stehen?

    Sie müssen nur dann zur Verfügung stehen, wenn register_long_arrays aktiviert ist. Allgemein ist es keine gute Idee mehr, auf HTTP_*_VARS zu setzen. Ab PHP 6 werden sie gar nicht mehr vorhanden sein.

    echo "$verabschiedung $name";

  3. Hallo Olaf,

    dass alle HTTP_POST_VARs, die von form.php kommen, unter PHP 5 leer sind.

    Warum das so ist, wurde ja bereits erkaert, dass du in Zukunft besser gleich auf $_POST und Co. zurueckgreifst, ebenfalls. Wenn du aeltere Skripte verhaeltnismaessig unkompliziert am Leben erhalten willst, kannst diesen Codeschnipsel zB. per Konfigurationsdatei einbinden.

      
    $HTTP_POST_VARS   = !empty($HTTP_POST_VARS)   ? $HTTP_POST_VARS   : $_POST;  
    $HTTP_GET_VARS    = !empty($HTTP_GET_VARS)    ? $HTTP_GET_VARS    : $_GET;  
    $HTTP_COOKIE_VARS = !empty($HTTP_COOKIE_VARS) ? $HTTP_COOKIE_VARS : $_COOKIE;  
    $HTTP_SERVER_VARS = !empty($HTTP_SERVER_VARS) ? $HTTP_SERVER_VARS : $_SERVER;  
    
    

    Gruß,

    Dieter