Ahnugsloser: HTTP_POST_VARS ist leer

Hi,

ich habe folgendes Problem:
dazu ein Teil des Codes:

#1.Teil
#hier werden Formulardaten in die DB eingetargen
#das ganze klappt auch wunderbar
if (isset($action) && $action=="insert_member_in_db")
    {
    $insert_id = build_member_arrays($HTTP_POST_VARS);
     ....
    }

.....weiter unten dann
#2.Teil
#an dieser Stelle wurden Datensätzte aus der DB ausgelesen
#und sollen editiert wieder in die DB eingetragen werden
if (isset($action) && $action == "edit_member_in_db")
    {
     $update_id = update_member($HTTP_POST_VARS);
    }

Aber im zweiten Teil (editieren) ist $HTTP_POST_VARS auf einmal leer,
obwohl z.B. $first_name gesetzt ist
$HTTP_POST_VARS["first_name"] nicht belegt (wobei die Verarbeitung im ersten teil wunderbar funktioniert)
Woran liegt das? Kann mir da jemand behilflich sein?

Danke!

  1. Moin!

    ich habe folgendes Problem:
    dazu ein Teil des Codes:

    #1.Teil
    #hier werden Formulardaten in die DB eingetargen
    #das ganze klappt auch wunderbar
    if (isset($action) && $action=="insert_member_in_db")
        {
        $insert_id = build_member_arrays($HTTP_POST_VARS);
         ....
        }

    .....weiter unten dann
    #2.Teil
    #an dieser Stelle wurden Datensätzte aus der DB ausgelesen
    #und sollen editiert wieder in die DB eingetragen werden
    if (isset($action) && $action == "edit_member_in_db")
        {
         $update_id = update_member($HTTP_POST_VARS);
        }

    Aber im zweiten Teil (editieren) ist $HTTP_POST_VARS auf einmal leer,
    obwohl z.B. $first_name gesetzt ist
    $HTTP_POST_VARS["first_name"] nicht belegt (wobei die Verarbeitung im ersten teil wunderbar funktioniert)

    Es kann ja garnicht sein, dass zuerst Teil 1 und dann Teil 2 ausgeführt wird, weil die Variable $action kaum plötzlich ihren Wert ändert (jedenfalls wenn ich richtig vermute, dass diese Variable vom Formular kommt und eigentlich konstant ist). Insofern ist es mehr als wahrscheinlich, dass dein Skript für den zweiten Teil irgendwas anders macht als für den ersten - und dieser Grund kann durchaus im generierten Formular liegen.

    Woran liegt das? Kann mir da jemand behilflich sein?

    Welche PHP-Version läuft auf dem Server? Seit Version 4.1 verwendest du besser $_POST als Variable (die ist superglobal, steht ohne Programmiereingriffe auch in Funktionen zur Verfügung). Und außerdem verwendest du ohnehin besser wahlweise $HTTP_POST_VARS bzw. $_POST, und nicht den Direktzugriff auf $action etc, denn seit Version 4.2 ist register_globals abgeschaltet - dort funktionieren deine Skripte ohne Anpassung sowieso nicht mehr. Besser, du stellst schon jetzt um.

    Und als dritter Rat sei dir der Befehl phpinfo(INFO_VARIABLES) ans Herz gelegt - damit siehst du alle GET, POST, COOKIE, SERVER und ENV-Variablen, die dem Skript zur Verfügung stehen (bzw. standen, denn die Anzeige erfolgt im Browser in einer schönen Tabelle) - wenn da was nicht deinen Erwartungen entspricht, siehst du es schnell.

    --

     - Sven Rautenberg
    1. Moin!

      ich habe folgendes Problem:
      dazu ein Teil des Codes:

      #1.Teil
      #hier werden Formulardaten in die DB eingetargen
      #das ganze klappt auch wunderbar
      if (isset($action) && $action=="insert_member_in_db")
          {
          $insert_id = build_member_arrays($HTTP_POST_VARS);
           ....
          }

      .....weiter unten dann
      #2.Teil
      #an dieser Stelle wurden Datensätzte aus der DB ausgelesen
      #und sollen editiert wieder in die DB eingetragen werden
      if (isset($action) && $action == "edit_member_in_db")
          {
           $update_id = update_member($HTTP_POST_VARS);
          }

      Aber im zweiten Teil (editieren) ist $HTTP_POST_VARS auf einmal leer,
      obwohl z.B. $first_name gesetzt ist
      $HTTP_POST_VARS["first_name"] nicht belegt (wobei die Verarbeitung im ersten teil wunderbar funktioniert)

      Es kann ja garnicht sein, dass zuerst Teil 1 und dann Teil 2 ausgeführt wird, weil die Variable $action kaum plötzlich ihren Wert ändert (jedenfalls wenn ich richtig vermute, dass diese Variable vom Formular kommt und eigentlich konstant ist). Insofern ist es mehr als wahrscheinlich, dass dein Skript für den zweiten Teil irgendwas anders macht als für den ersten - und dieser Grund kann durchaus im generierten Formular liegen.

      Woran liegt das? Kann mir da jemand behilflich sein?

      Welche PHP-Version läuft auf dem Server? Seit Version 4.1 verwendest du besser $_POST als Variable (die ist superglobal, steht ohne Programmiereingriffe auch in Funktionen zur Verfügung). Und außerdem verwendest du ohnehin besser wahlweise $HTTP_POST_VARS bzw. $_POST, und nicht den Direktzugriff auf $action etc, denn seit Version 4.2 ist register_globals abgeschaltet - dort funktionieren deine Skripte ohne Anpassung sowieso nicht mehr. Besser, du stellst schon jetzt um.

      Und als dritter Rat sei dir der Befehl phpinfo(INFO_VARIABLES) ans Herz gelegt - damit siehst du alle GET, POST, COOKIE, SERVER und ENV-Variablen, die dem Skript zur Verfügung stehen (bzw. standen, denn die Anzeige erfolgt im Browser in einer schönen Tabelle) - wenn da was nicht deinen Erwartungen entspricht, siehst du es schnell.

      »»Danke Dir, durch deine Hinweise (phpinfo(INFO_VARIABLES)) habe ich den Fehler ganz schnell gefunden. Danke auch für den Hinweis version 4.2 betreffend.