Antonia: Session Laufzeit

Hallo,

wenn ich mit

session_start();
$_SESSION['wwwmy'] = 1;

die Variable wwwmy in die Session schreiben - wie kann ich dann angeben, wie lange diese gültig ist. Ich möchte, das wwwmy bis genau zum 20.01.04 gültig ist.

Danke für Eure Hilfe,

Antonia

  1. Hallo!

    die Variable wwwmy in die Session schreiben - wie kann ich dann angeben, wie lange diese gültig ist. Ich möchte, das wwwmy bis genau zum 20.01.04 gültig ist.

    Das ist nicht der Sinn einer Session.

    Über eine Session soll man einen User währed eine Sitzung eindeutig identifizieren können. Bei dem nächsten Besuch der Webseite, bekommt der User eine neue Session-ID. Du kannst einer Session ein Verfallsdatum/zeit geben, nur darauf würde ich nicht wetten.

    Vielleicht könnte man etwas hinbiegen, wenn man zur Sessionverwaltung nicht den "session.save_handler" "file" verwendet, sondern einen eigenen. Das könnte eine Datenbank sein. Genug Klassen gibt es dafür. Daß man man nicht mehr selbst machen. In einem Cookie könnte man die letzte Session-ID ablegen bzw. das wird ja automatisch gemacht, wenn Cookies aktiviert sind. Für diesen Cookie kann man auch ein Verfallsdatum/zeit angeben. Aber, ganz so sicher bin ich mir nicht, ob das so einfach geht.

    Du solltest mit Cookies arbeiten. Bei Cookies kannst Du das Verfallsdatum festlegen. Über den Cookie erkennst Du den User immer wieder, wenn er Cookies zulässt und/oder nicht löscht.

    MfG, André Laugks

    --
    L-Andre @ gmx.de
    1. Hello,

      Das ist nicht der Sinn einer Session.

      Der Sinn einer Session ist es, dem Besucher mit Hilfe einer Identifikationsmethode einen eigenen temporären Datenstamm (Speicherplatz) zuzuordnen.

      Bei dem nächsten Besuch der Webseite, bekommt der User eine neue Session-ID. Du kannst einer Session ein Verfallsdatum/zeit geben, nur darauf würde ich nicht wetten.

      _Einer_ Session kann man in PHP kein Verfallsdatum geben. Der Verfall der Sessiondaten (das rigorose Löschen) ist für alle Sessions gemeinsam geregelt und von folgenden Faktoren abhängig:
      Die minimale Lebensdauer - fälschlicherweise session.gc_maxlifetime gennant

      Die Wahrscheinlichkeit des Löschprozesses -  session.gc_probability

      Die Besucherfrequenz, besser die Häufigkeit des Session-Start-Vorganges, der z.B. durch session_start() oder durch session_register() (bitte nicht mehr benutzen) ausgelöst wird.

      Wenn Du eine Sessiondatei länger aufheben willst, solltest Du dich von dem Simpelmechanismus verabschieden und dem Benutzer eine feste Session-ID und eine zusätzlichen PIN-Cookie zuordnen. Das Verzeichnis mit den Sessiondateien sperrst Du dann einfach gegen Lesen (r-Recht), aber nicht gegen Nutzung (x-Recht). Der GC kann dann nicht mehr tätig werden, da er dazu das Sessionverzeichnis browsen muss (Liste der Dateien beschaffen). Dazu musst Du die Sessions in ein eigenes Verzeichnis verlagern (session.save_path).

      z.B.  /tmp/sessions/sess_abcdeffg1234567890abcdeffg1234567890

      Wann eine Sessiondatei gelöscht wird, kannst Du dann selber entscheiden und dies z.B. mit session_destroy() vornehmen.

      Üblicherweise steht die Session-ID dann in einer User-Login-Datei.

      mit session_id($sess_number) VOR dem session_start() kannst Du diese dem User dann zuordnen.

      Viel Erfolg

      Tom