Harald: $_SESSION-Problem

Hi!

Was stimmt hier nicht? Wenn ich eine $_SESSION[test]-var verwende funktionieren die essions, aber hier dürfte irgendetwas nicht stimmen, was ist es?

<lang=php>
echo "Zeile1:".'$_SESSION[$_REQUEST[product]] = array();'."<br>&nbsp;".$_SESSION[$_REQUEST[product]]." = array()<br><br>";
$_SESSION[$_REQUEST[product]] = array();

echo "Zeile2".'$_SESSION[$_REQUEST[product]][selection] = $_REQUEST[selection];'."<br>&nbsp;".$_SESSION[$_REQUEST[product]][selection]." = ".$_REQUEST[selection]."<br><br>";
$_SESSION[$_REQUEST[product]][selection] = $_REQUEST[selection];

echo "Zeile3".'$_SESSION[$_REQUEST[product]][content] = $_REQUEST[picture_content];'."<br>&nbsp;".$_SESSION[$_REQUEST[product]][content]." = ".$_REQUEST[picture_content];
$_SESSION[$_REQUEST[product]][content] = $_REQUEST[picture_content];
</lang>

Ausgabe nach dem 2. Start:
Zeile1 :$_SESSION[$_REQUEST[product]] = array();
 = array()

Zeile2 :$_SESSION[$_REQUEST[product]][selection] = $_REQUEST[selection];
  = suggestion

Zeile3 :$_SESSION[$_REQUEST[product]][content] = $_REQUEST[picture_content];
  = _Simpsons_09.png
-----------------------Ausgabe-Ende -----------------

Danke
harald

  1. echo $begrüßung;

    Was stimmt hier nicht? Wenn ich eine $_SESSION[test]-var verwende funktionieren die essions, aber hier dürfte irgendetwas nicht stimmen, was ist es?

    Es fehlt die Fehlerbeschreibung. Anhand eines unkommentierten Codes kann man nur die offensichtlichen Fehler erkennen, aber nicht, was damit eigentlich erreicht werden soll. Das geht nur mit Rätselraten. Syntax-Fehler sind keine zu erkennen. Nur der fehlende Gebrauch von Anführungszeichen um Stringwerte, die als Array-Schlüssel verwendet werden, wäre anzumerken: Why is $foo[bar] wrong?

    Ansonsten hast du nicht gesagt, was der Inhalt der von dir verwendeten Variablen bzw. Arrays ist.
    Vielleicht solltest du dir den auch mal selbst ansehen, nicht dass du von falschen Annahmen ausgehst.

    print_r() und var_dump() helfen bei der Analyse der komplexen Typen (Array und Objekte), wobei var_dump() etwas genauer ist beim Anzeigen des Inhalts. Ein <pre> vor der Ausgabe erhöht in beiden Fällen die Übersicht.

    Auch hilft ein auf E_ALL gestelltes error_reporting Zugriffe auf nicht vorhandene Variablen und Array-Elemente zu erkennen.

    echo "$verabschiedung $name";

    1. Hi!

      Eigentlich sollte alles mit den var stimmen, wenn ich als erstes die Speicherfunktion ausführe (also z.B. $_SESSION[$_REQUEST[product]][selection] = $_REQUEST[selection]; ) und danach das Ganze mit echo ausgeben lasse erhalte ich immer das Richtige => z.B. suggestion=suggestion; ), aber beim nächsten aufruf hat er die var "wieder vergessen", warum?

      Danke
      Harald

      PS: Gibt es außer den sessions noch eine Möglichkeit var über länger als ein Site auf dem server zu speichern?

      1. Hi Harald,

        PS: Gibt es außer den sessions noch eine Möglichkeit var über länger als ein Site auf dem server zu speichern?

        Ja, zum Bleistift mit
        serialize() und anschließendem file_put_contents().

        Zurückholen kannst du die Daten dann (logischerweise ;-)) mit file_get_contents() und unserialize()

        MffG
        EisFuX

      2. Moin!

        Eigentlich sollte alles mit den var stimmen, wenn ich als erstes die Speicherfunktion ausführe (also z.B. $_SESSION[$_REQUEST[product]][selection] = $_REQUEST[selection]; ) und danach das Ganze mit echo ausgeben lasse erhalte ich immer das Richtige => z.B. suggestion=suggestion; ), aber beim nächsten aufruf hat er die var "wieder vergessen", warum?

        Bist du sicher, dass in $_REQUEST alle Angaben so sind, wie du glaubst? Schau nach!

          
        echo "<pre>";  
        var_dump($_REQUEST);  
        echo "</pre>";  
        
        

        Das Gleiche kann man auch mit $_SESSION machen - gerne auch mehrfach im Skript. Dann siehst du, was passiert.

        Wenn innerhalb eines Skriptdurchlaufs alles korrekt ist, und die Sessionwerte trotzdem nicht weitergereicht werden, mußt du prüfen, ob Cookies oder URL-Übermittlung der Session-ID funktionieren.

        PS: Gibt es außer den sessions noch eine Möglichkeit var über länger als ein Site auf dem server zu speichern?

        Es gibt nichts, was grundsätzlich anders funktioniert, wie Sessions. Es hilft dir ja nichts, wenn du einmal diese Werte speicherst, damit aber grundsätzlich ALLE Clients bedienst, die gerade parallel zugreifen, die Daten sollen ja doch schön getrennt je User bleiben.

        Ich empfehle daher, den PHP-Sessionmechanismus zu benutzen, und nicht selbst was zu basteln. Das ist einfach viel weniger fehlerträchtig.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."