session dauer

lifehunter

Erfahrenes Mitglied
hallo,
bei mir auf der seite arbeite ich mit session. wenn ein user sich also einlogt wird seine ID und sein nick in einer session gespeichert. diese ist aber nur 30min gültig. gibt es eine möglichkeit die zuverlängern? oder ein anderes system mit dem ich diese daten auf jeder seite griff bereit habe? wär super wenn mir da jemand weiterhelfen könnte.
 
Du könntest die Session-ID in einem Cookie speichern oder als „ETag“-Header senden und diesen bei Wiederaufruf abfragen; somit könntest du die vorherige Session wieder aufnehmen, allerdings wären die temporär auf dem Webserver gespeicherten Session-Daten dann nicht mehr erhalten.
 
also ich habe jetzt zb die session-daten
$_SESSION['ID'] und $_SESSION['nick']
wie kann ich die länger als 30min gültig machen?
 
Die Session-Daten sind nur solange auf dem Webserver existent, solange sich ein User Agent mit der Session-ID identifiziert und die Lebenszeit, also die maximale Zeit seit der letzten Identifizierung, nicht abgelaufen ist.
Wenn du die Daten langwieriger speichern möchtest, solltest du eine entsprechende Speicherart wie eine Datenbank vorziehen.
 
also bisher wird bei mir auf jeder Seite abgefragt ob man schon eingelogt ist und das mit einer einfachen Abfrage ob es eine $_session gibt. Wenn es diese gibt wird man in eine Datenbank geschrieben das man online ist (für die Liste der User die online sind).
Die User stört es zur Zeit also das sie zwangsweise nach 30min sich neu anmelden müssen. Man kann das zwar über cookies machen aber das hat ja leider nciht jeder eingeschaltet.
Wenn ich das über eine Datenbank Abfrage mache, müsste ich durchgehend eine Variable weitergeben und das wäre zu riskant, weil das heißt das man einfach nur eine Variable an die Internet addy dran hängen muss um sich als jemand anderes auszugeben der gerade online ist.
 
Eine allgemeine Lösung wäre, jegliche Aktion des Benutzers zu speichern – zumindest den Zeitpunkt der letzten Aktion. Damit wäre auch schnell erfassbar, wer innerhalb einer gewissen Zeitspanne aktiv und damit online war.

Da nicht jeder Cookies zulässt, lautete meine Idee, zusätzlich einen
„ETag“-Header mit der Session-ID zur späteren Identifikation zu senden.
 
Ich galube ich werde es so machen das ich eine Abfrage mache wie alt eine Session ist. Wenn sie älter als 28min is wird sie gelöscht und eine neue geschrieben. Ich denke das ist die beste Lösung und der User kann so lange online bleiben bis er wirklich offline geht.

Nur interessehalber was ist ein "ETag"- Header?
 
Eine ander Möglichkeit wäre, jedesmal, wenn sich der user einloggt eine SID selbst zu generieren, in der DB abzulegen und per variable in der URL mitzugeben. Logt sich der user neu ein bekommt er eine neue SID, man kann dann über ein einfaches Script die user auch nach beliebiger Zeit rausschmeißen. Um Sessiondaten zu haben speicherst du die einfach in einer Datenbank und machst eine Datei, wo du diese Daten ausliest und includest diese Datei immer an den Anfang deiner Seiten, dann hast du immer und überall und beliebig lang deine Sessiondaten. Dadurch, das du die SID immer neu generierst und kein user eine feste SID hat ist das auch eine recht gute Lösung. Ich hoffe das war nun net zu wirr!
 
Mein Vorschlag: Das HTTP-Header-Feld „ETag“ wird neben dem HTTP-Header-Feld „Last-Modified“ oft im Bezug auf Caching der Webseite benutzt. (s. Anne van Kesteren: „HTTP 304: Not Modified“) Das ETag-Header-Feld kann jedoch auch genutzt werden, um neben einer Prüfsumme auch weitere Informationen zu senden, beispielsweise auch eine Session-ID (vgl. Christopher Lenz: On HTTP Last-Modified and ETag). Damit würde die Gruppe der Nicht-Cookie-Akzeptanten und Nicht-ETag-Header-Feld-Sender kleiner, da fast jeder moderne Browser dieses Header-Feld sendet.

Weitergehend überprüfst du bei jeder Aktion eines Benutzers, ob dieser eine Session-ID zur Identifikation sendet. Ist dies der Fall, wird die alte Session wieder aufgenommen, sonst wird eine neue gestartet. Wenn du nun mit längerfristige Werten arbeiten möchtest, speicherst du sie zusammen mit der Session-ID in einer Datenbank, woher sie bei erneuter Identifizierung wieder abgefragt werden können.
 
Zurück