Franki: Hilfe bei Sessioneinstellung

Hallo Leute,

ich hatte auf meiner Seite einen immer wiederkehrenden Fehler ausgemacht:
Wenn sich ein Benutzer einloggt, erhält er eine Session, in der alle seine Daten gespeichert wurden. Nach einer bestimmten Zeit (ich habe noch nicht herausgefunden wann aber z.B. nach 3 Stunden) ist die Sesion nicht mehr da.

Ich hab mich daraufhin schon im Internet erkundigt und session_cache_expire gefunden, das auf 180 Minuten gesetzt ist. Irgendwie hat das aber nichts genützt, bis ich dann auf session_cache_limiter gestoßen bin und das ist auf nocache gesetzt, also hat der erste Wert eigentlich gar keinen Einfluss.

Ich hätte gerne eine Session, die erst dann beendet wird, wenn der Browser geschlossen ist oder sie von mir beendet wird.

Beide Wege funktionieren ja schon, außer, daß sie automatisch nach einer bestimmten inaktiv-Zeit beendet werden.

LG Franki

  1. Hello Franki,

    der Betrieb von Sessions sollte immer mehrstufig gesehen werden.

    Die unterste Ebene bildet der Session-Mechanismus, der die Identifikation des Clients sicherstellt.

    Damit verbunden wird ein Mechanismus, der die Authentifikation des Users (seines Accounts) bewerkstellingen soll.

    Auf beiden Mechanismen aufgesetzt kann man dann Vorgänge abarbeiten, deren Daten gespeichert werden, am besten in einer von der Session getrennten Datenhaltung (z.B. Datenbank).

    Selbstverständlich kannst Du auch alle drei Datenarten in der Sessiondatei ablegen, hast dann aber immer den Nachteil, dass angefangene Vorgänge nach einiger Untätigkeit des Clients verschwinden, weil sie vom Müllsammler (Garbage Collector) beim Aufräumen mit weggeräumt werden.

    Die dafür zuständige Zeiteisntellung ist "session.gc_maxlifetime", die eigentlich "session.gc_minlifetime" heißen müsste, denn erst nach Ablauf dieser Zeit wird die Sessiondatei frühestes weggeräumt, wenn sie solange unbenutzt war.

    Manche Installationen erledigen diesen Job mittels Cronjob. Dann wird die Zeit relativ genau eingehalten. Andere Installationen erledingen diesen Job mittels getriggertem Programm. Wann dies genau getriggert wird hängt vom Betrieb auf dem Server ab (Nutzung von PHP) und von den statistischen Einstellungen, die man unter den Session-Einstellungen in der php.ini vornehmen kann.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hallo Tom,

      danke für die Antwort, Sie hat mir sehr weitergeholfen das ganze Session-Zeug zu verstehen - ist meine erste.
      Es geht eigentlich nur um solche Sachen wie die Auswahl des Skins, den der Benutzer als Default speichern, aber auch nebenher während der Session mal zum Testen wechseln kann.

      Soetwas in der Datenbank zu speichern macht keinen Sinn.

      Damit müßte ich jetzt das Problem lösen können - wenn auch nicht so, wie ich es vorhatte.

      LG Franki

      1. Hi,

        Es geht eigentlich nur um solche Sachen wie die Auswahl des Skins, den der Benutzer als Default speichern, aber auch nebenher während der Session mal zum Testen wechseln kann.

        das klingt für mich nach einem Einsatzgebiet von Cookies. Diese können eine Lebenszeit besitzen, die auf die Session des Browsers beschränkt ist. Vorsicht: Dieser Begriff "Session" hat absolut nichts mit Deinen Sessions zu tun.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. Hi,

    Ich hätte gerne eine Session, die erst dann beendet wird, wenn der Browser geschlossen ist oder sie von mir beendet wird.

    wenn der Browser geschlossen wird, erfährt der Server hiervon nichts. Die Session würde in dem Fall also bis in alle Ewigkeit weiter laufen. Um diesen Umstand zu kompensieren, haben Sessions einen Verfallszeitpunkt (der i.d.R. bei Nutzung regelmäßig erneuert wird).

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes