Christopher: Session Variable wirklich "loeschen"

Hallo,

in meinem Script gibt es session gesteuerte Abläufe. Nach dem Login werden gewisse Variablen festgelegt. Nun hatte ich ein Konzept, dass beim Logout die Session variablen gelöscht werden sollten. Beispielsweise ein Array. Ich rufe unset($_SESSION['testarray']) außerhalb von Funktionen auf.

Logge ich mich wieder ein, ist der Wert jener Variablen allerdings nicht NULL, sondern ein - man wage es kaum zu glauben - LEERES ARRAY.

Warum?

mit session_destroy() ists übrigens dasselbe Ergebnis. Vermute, dass das ein recht bekanntes Phänomen ist und ich bitte um Weiterhilfe...

Danke!

  1. Hallo,

    hast du die Session bevor du sie zerstören willst auch gestartet? Versuch doch einfach mal einen anderen Wert zu speichern und überprüfe das Ergebnis.

    Ansonsten nicht "unsetten" sondern NULL speichern.

    Ciao
    Heinzelhund

    1. Ansonsten nicht "unsetten" sondern NULL speichern.

      Auch das hilft der Sache nicht bei, da der Wert DENNOCH ein leeres Array bildet.

      Der Sinn war es, ein Session['array'] mit Werten zu füllen, wenn der index noch nicht gesetzt ist. Damit wollte ich an DB-Kommunikation sparen. Somit sollten Werte nur wiederhergestellt werden, wenn die Session ausgetimed war.

      Jetzt werde ich einfach so vorgehen.

      !isset(Session['array']) || empty(Session['array'])

  2. echo $begrüßung;

    Ich rufe unset($_SESSION['testarray']) außerhalb von Funktionen auf.
    Logge ich mich wieder ein, ist der Wert jener Variablen allerdings nicht NULL, sondern ein - man wage es kaum zu glauben - LEERES ARRAY.

    Welche Variable? $_SESSION['testarray'] oder $_SESSION?

    $_SESSION['testarray'] muss beim lesenden Zugriff eine "Undefined index"-Notice ergeben (error_reporting auf E_ALL vorausgesetzt). Nach einem unset() des letzten Elements in einem Array bleibt ein leeres Array übrig. So auch bei $_SESSION.

    $_SESSION ist nach einem session_start() immer ein leeres Array, falls keine Daten in der Session sind. Es hilft auch nichts, $_SESSION einen anderen Typ als Array zuzuweisen. Beim nächsten session_start() ist es wieder ein (leeres) Array. Es ist als Array definiert. Versuche, es umzuwidmen, erachte ich nicht als sinnvoll.

    echo "$verabschiedung $name";