Joachim: session_cache_expire

Hallo,

weiss jemand ob session_cache_expire() geeignet ist, einen session timeout festzusetzen? Ich habe erfolglos mit dem php.net Beispiel rumgebastelt (Die Session bleibt einfach erhalten), und mache es "klassisch", indem ich die Auslaufzeit manuell neu setze und bei Ueberschreiten die Session beende.

Gruesse  Joachim

  1. Hallo,

    weiss jemand ob session_cache_expire() geeignet ist, einen session timeout festzusetzen? Ich habe erfolglos mit dem php.net Beispiel rumgebastelt (Die Session bleibt einfach erhalten), und mache es "klassisch", indem ich die Auslaufzeit manuell neu setze und bei Ueberschreiten die Session beende.

    Hi  hab gestern selber noch session_cache_expire() benötigt, fand die Erklärung auch n bischen mager, wenn du die Comments zu dem session_cache_expire() liest, die in der php doku drin sind langts zum verstehen wofür session_cache_expire() gedacht ist...

    habe es bei mir in 2 varianten gebraucht und es hat funktioniert:

    1. Aufruf ohne Übergabeparameter:  es liefert dir den Aktuellen Wert zurück ( in Minuten ) der besagt, wie lange es dauert bis die Session Ungültig ist. Und "nicht mehr zu gebrauchen" ist. D.h. aber nicht das sie zu diesem Zeipunkt von Garbage Collector schon aufgeräumt ist... Das kannst du noch mit ner weiteren Funktion beeinflussen...

    2. Aufruf mit Übergabeparameter ( zb 30): Es wird der Timer für eine Session auf 30 Minuten gesetzt. Wenn du dieses Setzen nicht machst, gilt die Ablaufzeit die vom Server als Standard gesetzt ist. Die kannst mit phpinfo() finden. Wenn du die 30 min wartest ( zum testen kannst auch 5 oder 1 nehmen ;-) ) Und dann Auf die Session zugreifen willst bekommst du darauf kein Zugriff mehr, was bei mir zb die Folge hat, dass man aus dem internen Bereich rausfliegt und sich neu anmelden muss...

    Fazit: mit session_cache_expire() kannst du sowohl die Zeit abfragen, als auch setzen und es funktioniert...

    Gruesse  Joachim

    Grüße zurück Stefan

    1. Hi,

      Wenn du die 30 min wartest ( zum testen kannst auch 5 oder 1 nehmen ;-) ) Und dann Auf die Session zugreifen willst bekommst du darauf kein Zugriff mehr, was bei mir zb die Folge hat, dass man aus dem internen Bereich rausfliegt und sich neu anmelden muss...

      hmm, genau das hatte ich getested, entsprechend dem Beispiel aus php.net. Ich konne aber die Auslaufzeit nicht veraendern:

      session_cache_limiter('private');
      $cache_limiter = session_cache_limiter();
      session_cache_expire (1);
      $cache_expire = session_cache_expire();

      session_start();
      $_SESSION["test"] =  isset($_SESSION["test"])? $_SESSION["test"] : $HTTP_GET_VARS["test"];
      echo "Die Cacheverwaltung ist jetzt auf $cache_limiter gesetzt<br>";
      echo "Die Session wird für $cache_expire Minuten im Cache gespeichert<br>";
      echo $_SESSION["test"];

      Kann es sein, dass man die Berechtigung haben muss, die Server-Auslaufzeit zu ueberschreiben?

      Gruesse  Joachim

      1. session_cache_limiter('private');
        $cache_limiter = session_cache_limiter();
        session_cache_expire (1);
        $cache_expire = session_cache_expire();

        session_start();

        hm denke du solltest mal die reihenfolge ändern

        ich hab zb:
        session_start();
        session_cache_expire(90);
        if (!session_is_registered("PKCSESSION"))
        {
         // if session check fehlgeschlagen ab zur loginseite
         header("Location: ../frontend/login.php?e=1");
         exit();
        }

        habe zuerst ne session gestartet
        und dann bei ner laufenden session den expire gesetzt
        du versuchst hingegen den expire einer session zu setzen und startest dann erst die session

        mfg
        Stefan