Ablauf Zeitpunkt eines Session Cookies auslesen

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Sprint

Erfahrenes Mitglied
Hallo zusammen,

bei einer Seite habe ich das Problem, daß das wichtigste und umfangreichste Formular über Ajax verarbeitet wird. Dadurch kann es passieren, daß der Server die übermittelten Daten nicht mehr verarbeitet weil die Session abgelaufen ist, der User aber gar nichts davon merkt bzw. erst nach Ausfüllen des Formulars die Meldung bekommt, daß die Session abgelaufen ist.

Über Ajax und PHP die Session abzufragen ist nicht die Lösung, weil dann ja jedesmal die Session erneuert wird. Sie soll aber ruhig ablaufen. Ich müßte also über JS das Session Cookie auslesen. Ein Cookie Manager gibt mir aber als Ablaufdatum nur aus "am Ende der Session", was natürlich auch nicht hilfreich ist.

Wie kann ich also mit JS feststellen, wie lange die Session noch aktiv ist, um dem User live anzuzeigen, wie lange er noch Zeit hat bzw. nach Ablauf automatisch zum Login zu springen?

Danke schon mal im Voraus,
Sprint
 
wenn du die session erstellt hast kannst du doch ein Timer mit laufen lassen der die vorgegebene Zeit bis zum ablauf runter zählt. Timer ist schnell gemacht und du brauchst keine reloads um zu wissen wann die Session endet
 
Ich will ja keine feste Ablaufzeit setzen. Wenn jemand arbeitet, soll die Session auch immer wieder verlängert werden. So wie es normalerweise der Fall ist. Ich will nur erkennen können, wenn die Session abgelaufen ist, um dem User eine entsprechende Warnung o.ä. anzeigen zu können. Ein Timer wäre natürlich schon möglich, nur muß der ja bei jedem Seitenwechsel explizit erneuert werden und ich hatte gehofft, das umgehen zu können.
 
Ein Timer wäre natürlich schon möglich, nur muß der ja bei jedem Seitenwechsel explizit erneuert werden und ich hatte gehofft, das umgehen zu können.
Gut das wäre ja nicht das problem. Ansonsten sehe ich jetzt keine möglichkeit das Ende des Ablaufs zuerfahhren ohne ein Requesr / Reload zu machen. Irgendwo her mußt du ja erfahren wann das Ende ist. Du könntest beim erstellen der session die Zeit in einen Cookie speichern und den ständig abfragen oder in ( localStorage() speichern ). So hast u auch keine Requeste. Ansonsten wüßte ich jetzt keine mögichkeit wie man das machen könnte. Zumindestwürde ich es so machen
 
Danke für die Tips. Ich hab es jetzt so gemacht. Mit jedem Seitenwechsel wird die aktuelle Zeit gemerkt und über Ajax wird alle 3 Minuten nachgeschaut, ob die Differenz zur aktuellen Zeit größer 3600 ist.
Funktioniert zwar, kommt mir aber doch etwas umständlich vor. Ich schalte ja im Endeffekt den servereigenen Timer aus um ihn durch einen eigenen zu ersetzen. Aber wenn außer dem Server niemand seinen Session-Timer auslesen kann, geht es ja wohl nur so.
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Zurück