Karl: Bekomme meine $_POST Werte nicht aus Session zurück

Hallo Forum,

ich habe gerade ein Brett vor dem Kopf, wie es scheint. Ich packe serialisierte Werte in eine Session und kann sie anschließend ausgeben.

Aber das Zurückkopieren in $_POST gibt mir nichts aus.

Codeschnipsel:

  
// Session erstellen  
$_SESSION[$id]['post'] = $arr_post;  
  
echo("<PRE>");  
print_r($_POST);  
echo("</PRE>"); // ergibt tadellose Ausgabe der POST-Daten  
  
echo("<PRE>");  
print_r($_SESSION[$id]);  
echo("</PRE>"); // ergibt u.a. [post] => a:30:{s:6:\"create\";s:4:\"TRUE\ usw. ...  
  
#============================  
# Übergabeparameter einlesen  
#============================  
  
$_POST = array();  
$_POST = unserialize($_SESSION[$id]['post']);  
  
echo("<PRE>Test:");  
print_r($_POST);  
echo("</PRE>"); // ergibt "Test:"  
  
exit;  

Was mache ich hier falsch?

Karl

  1. // Session erstellen
    $_SESSION[$id]['post'] = $arr_post;

    echo("<PRE>Test:");
    print_r($_POST);
    echo("</PRE>"); // ergibt "Test:"

    exit;

      
    Scheint so als ob in $arr\_post "Test:" drin steht.  
      
    So nebenbei, die Super Global zu vergewaltigen ist eine ganz schlechte Idee. Irgendwann setzt irgendein Script irgendwo ein $\_POST['da\_guckste'] auf true und du hast keine Ahnung wieso. Und schwups sind alle User Admins und dürfen alles ändern.  
      
    Gruß  
    Rudolfs Platz einnehmender  
    T-Rex
    
    1. Scheint so als ob in $arr_post "Test:" drin steht.

      Nein,das test kommt hartcodiert aus dem HTML Quelltext.

      So nebenbei, die Super Global zu vergewaltigen ist eine ganz schlechte Idee.

      nennt mir mal ne bessere, wenn ich ca. 30 $_POST Werte in einem sich selbst immer wieder kaufrufenden Script mit durch schleppen muß.

      Karl

      1. Scheint so als ob in $arr_post "Test:" drin steht.

        Nein,das test kommt hartcodiert aus dem HTML Quelltext.

        Stimmt, na dann ist $arr_post leer...

        nennt mir mal ne bessere, wenn ich ca. 30 $_POST Werte in einem sich selbst immer wieder kaufrufenden Script mit durch schleppen muß.

        Also die Post werte in die Session schreiben ist ja nicht das Problem. Das zurück schreiben in das Post ist doof. Wenn du nicht mit Objekten arbeiten willst würde ich eine gleiche Arraystruktur aufbauen und die würde ich dann an eine Funktion übergeben:

        function execute( $arExecute )  
        {  
            //--- mach was  
        }  
          
        if( $_POST )  
        {  
            execute( $_POST );  
        } else if( isset( $_SESSION['specialarray'] ) && $_SESSION['specialarray']  ) {  
            execute( $_SESSION['specialarray'] );  
        } else {  
           //--- Fehler?  
        }
        

        Nur so als Gedanke.

        Gruß
        Denker, der Dank Gedanken, Gedanken denkt
        T-Rex

        1. Stimmt, na dann ist $arr_post leer...

          womit wir dann wieder bei der Ausgagsfrage wären ;-)

          Nur so als Gedanke.

          OK, einverstanden.

          Aber auch bei dieser Lösung mus ich die Daten aus der session ins Produktivarray bekommen.

          Gruss. Karl

          1. Stimmt, na dann ist $arr_post leer...

            womit wir dann wieder bei der Ausgagsfrage wären ;-)

            Nein. Deine Ausgangsfrage ist wieso $_POST leer ist. Meine Antwort ist, weil $arr_post leer ist. Wieso dies der Fall ist steht weiter oben in deinem Script. Den Teil hast du nicht gezeigt.

            Nur so als Gedanke.

            OK, einverstanden.

            Aber auch bei dieser Lösung mus ich die Daten aus der session ins Produktivarray bekommen.

            Nein. Du schaufelst die Daten irgendwann von POST in die Session. Das ist ja legitim. Zum weiterverarbeiten musst du sie aber nicht mehr von Session in POST schaufeln sondern übergibst sie an die Funktion.

            Gruß
            Session basierter
            T-Rex

            1. Nein. Deine Ausgangsfrage ist wieso $_POST leer ist. Meine Antwort ist, weil $arr_post leer ist.

              T-Rex, diese Antwort ist leider falsch, ich habs geprüft.

              Ist aber heute zu spät und zu promillehaltig, Dir mehr Infos zu geben. Blöderweise hab ichs an anderer Stelle bereits realisiert, mit dem Unterschied, daß ich die serialisierten Daten in einer db zwischenspeichere anstelle in einer Session.

              Erstmal danke für die Hilfe, wenn der Fehler nicht in dem geposteten Code liegt, weiß ichs nicht :-(

              Die Idee, die Daten nicht in $_POST "zurückzukopieren" ist (zumindest an dieser Stelle) aber wirklich gut. Werde ich umsetzen.

              Sonst noch ne Idee?

              Karl

  2. Moin,

    seh ich das grade falsch, oder fehlt bei dir ein session_start(); ?

    Grüße Marco

    --
    Ich spreche Spaghetticode - fließend.
  3. Tach!

    // Session erstellen
    $_SESSION[$id]['post'] = $arr_post;

    Du schreibst nicht, wie $arr_post erstellt wurde.

    print_r($_SESSION[$id]); // ergibt u.a. [post] => a:30:{s:6:"create";s:4:"TRUE\ usw. ...

    Daraus entnehme ich, dass es ein serialisiertes Array ist.

    $_POST = array();

    Das ist unnötig, weil du ja im nächsten Schritt einen komplett neuen Wert zuweist. Initialisieren muss man nur, wenn nachfolgend nur einzelne Felder im Array beschrieben werden.

    $_POST = unserialize($_SESSION[$id]['post']);
    print_r($_POST); // ergibt "Test:"

    Und was ergibt var_dump($_POST);?

    Was mache ich hier falsch?

    Serialisieren vor dem Ablegen in eine Session ist jedenfalls nicht nötig, $_SESSION speichert auch komplexe Strukturen problemlos. Es serialisiert die Daten ja selbst.

    dedlfix.

    1. Hi dedlfix,

      sorry, habe Dein Post erst jetzt entdeckt.

      Das ist unnötig, weil du ja im nächsten Schritt einen komplett neuen Wert zuweist. Initialisieren muss man nur, wenn nachfolgend nur einzelne Felder im Array beschrieben werden.

      Sehr gut zu wissen, das habe ich mich nämlich schon lange gefragt.

      Serialisieren vor dem Ablegen in eine Session ist jedenfalls nicht nötig, $_SESSION speichert auch komplexe Strukturen problemlos. Es serialisiert die Daten ja selbst.

      Auch gut zu wissen, denn ohne das serialize und unserialize bekomme ich auch alle Werte problemlos wieder aus der Session heraus.

      Danke und warum das zuvor nicht klappte, werde ich später nochmal erroieren.

      Karl

  4. hi,

    Aber das Zurückkopieren in $_POST gibt mir nichts aus.

    Warum willst Du das überhaupt machen? Hier scheint mir ein grundlegendes Problem vorzuliegen, mit dem Umgang von Benutzereingaben, die als Request-Parameter ankommen, mit dem Aufbau, Sinn und Zweck einer Session und mit einer nicht durchdachten Logik sowie mangelhaften Kontrollstrukturen.

    Gus