Bene: session-variablen nach session_destroy noch vorhanden

Guten Tag,

ich bin grad etwas verwirrt:
ich rufe in meinem Skript vor und nach session_destroy print_r($_SESSION) auf und erhalte jedes mal die gleiche Ausgabe, was doch niemals der Fall sein sollte, oder?

Könnt ihr mir weiterhelfen?
Danke und freundliche Grüße
Benedikt

  1. Hi,

    ich rufe in meinem Skript vor und nach session_destroy print_r($_SESSION) auf und erhalte jedes mal die gleiche Ausgabe, was doch niemals der Fall sein sollte, oder?

    Ist normal. destroy löscht "nur" die Daten auf dem Server, damit dort Ordnung herrscht - sonst kommt irgendwann die Putze (= Garbage Collection). ;-)

    Um die Session komplett zu löschen:

    unset($_SESSION);
     if(isset($_COOKIE[session_name()])) {
      $sessionCookieParams=session_get_cookie_params();
      setcookie(session_name(),'',time()-42000,$sessionCookieParams['path'],$sessionCookieParams['domain']);
     }
     session_destroy();

    1. Variable
    2. (ggf.) Cookie
    3. Datei

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    1. Hallo,

      danke für die Antwort.
      in meinem Fall werden aber nicht mal die Daten auf dem Server gelöscht. Gerade die sind ja noch da.
      Ich habe mal weiter recherchiert und bin darauf gestoßen, dass die SESSION wohl noch bis zum Ende des Skripts zur Verfügung steht.
      Das würde bestätigen was ich gemerkt habe: das nach session_destroy die Daten noch da sind, bei einem neuen Request aber nicht mehr. Weiß da jemand genaueres, sicheres?

      Danke
      Bene

      1. Hi,

        in meinem Fall werden aber nicht mal die Daten auf dem Server gelöscht. Gerade die sind ja noch da.

        Danach hast du allerdings gar nicht gefragt! Du hast nach "print_r($_SESSION)" gefragt. =:-o

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        1. Hallo,

          versteh ich jetzt nicht!
          Ich hab geschrieben das vor und nach session_destroy mit print_r die gleiche Ausgabe erzeugt wird, was ja eigentlich nicht sein dürfte, da die Daten ja dazwischen gelöscht werden.
          Kannst du das bestätigen das die Daten noch bis Ende des Skripts zur Verfügung stehen. Ich hab das nämlich nur in einem Forum gelesen und bisher keine verlässliche Quelle gefunden.

          Danke
          Benedikt

          1. echo $begrüßung;

            Ich hab geschrieben das vor und nach session_destroy mit print_r die gleiche Ausgabe erzeugt wird, was ja eigentlich nicht sein dürfte, da die Daten ja dazwischen gelöscht werden.
            Kannst du das bestätigen das die Daten noch bis Ende des Skripts zur Verfügung stehen. Ich hab das nämlich nur in einem Forum gelesen und bisher keine verlässliche Quelle gefunden.

            Das PHP-Handbuch sollte eine verlässliche Quelle darstellen. Und in der Tat ist dieses Verhalten unter session_destroy() so beschrieben, nebst Beispiel, wie man auch noch die Daten wegbekommt.

            echo "$verabschiedung $name";

          2. Hi,

            versteh ich jetzt nicht!

            Datei != Daten

            Ich hab geschrieben das vor und nach session_destroy mit print_r die gleiche Ausgabe erzeugt wird, was ja eigentlich nicht sein dürfte, da die Daten ja dazwischen gelöscht werden.

            session_destroy() löscht die serverseitige Session-*Datei* (und zwar sofort - nicht nach Ablauf des Scripts). Die Daten (die sich PHP aus dieser Datei holt) stehen *immer* bis zum Scriptende zur Verfügung, sofern sie nicht explizit (wie von mir im Beispiel gezeigt) gelöscht werden.

            Gruß, Cybaer

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
            1. Hallo,

              jetzt ist es klar!

              Danke
              Bene