PHP: Logout durch Tab schließen?

Moin Gemeinde,
hab da so’n paar Seiten mit Login-System, das auf Cookies basiert. Schließen des Browsers ohne sich vorher abgemeldet zu haben bewirkt nen Logout, da der Cookie gelöscht wird. Dasselbe Verhalten würde ich gerne auch beim Schließen des Tab erreichen. Die Lebensdauer des Cookie kann leider nicht entsprechend gesetzt werden und ich habe keine Idee, wie’s sich ansonsten zuverlässig realisieren lässt.
Jemand von euch evtl.?
Thx!

Hallo,

da der Browser mit sicherheit den Server NICHT bescheit sagt, das ein Tab geschlossen wird, kannst du Serverseitige sachen komplett vergessen, du könntest es mal mit Clientseitigen zeugs probieren.

JavaScript: onunload();

Keine Ahnung ob das funktioniert, müsste man mal versuchen…

so long
jd

Jo das kam mir auch schon in den Sinn… Hm!
Nicht das Gelbe vom Ei aber immerhin.

Naja, da hast du echt wenig Chancen, da du nur Client-Seitig lösen kannst, und da bietet sich JavaScript eigentlich am besten an. Ich habe das bei mir so gelöst, das wenn der User idled das die Session nach 5min Ausläuft (kannst auch 60min machen). Es kommt auch immer drauf an wie trivial dein Content ist. Das ist an sich ein Krieg zwischen “Security and Useability” Wenn der user aktiv ist, wird er nicht ausgeloggt. So machen die das beim Online-Banking auch. Log dich mal ein warte 5min dann mauelt die Seite das deine Session nicht mehr gültig ist. Wenn du brav klickst oder in Forms was ein tippst (Überweisung) dann passiert nichts.

Und mir fällt an sich auch nicht besseres als JavaScript ein.

so long
jd

Javascript ist aber sehr unsicher, da nicht gewährleistet werden kann dass dies wirklich ausgeführt wird. Zusätzlich kann die Cookie Lebenszeit so eingestellt werden, dass, wenn der Browser geschlossen wird, das Cookie verworfen wird. Recht viel mehr Möglichkeiten wird es nicht geben.

@jd84
Jo das mit dem automatischen Logout nach einer gewissen Zeit der Inaktivität mache ich sowieso.

@progs
Genau wegen dieser Unsicherheit von JS war ich von dem Vorschlag mit onunload() nur bedingt begeistert.

Aber ok, dann weiß ich wenigstens, daß ich keine offensichtliche Lösung übersehen habe.
Es fehlt einfach die Möglicheit, das Cookie mit dem Schließen des Tabs zu löschen.

war es immer wird es wohl immer sein

von daher gibt es eigentlich keinen log-out

wie lange eine session gueltig ist - und wie du die session von einem zum naechsten request am leben erhalten kannst liegt bei dir (das machen i.d.R. heute frameworks) … selbst was eine “session” sein soll - bleib ganz bei dir …

ob tabs geschlossen werden sollte einfach ueberhaupt nicht interessieren …

Du kannst z. B. eine sehr kurze Lebensdauer der Session einstellen, 2 Minuten oder so.

In der Webseite lädst du mittels Ajax alle 30 Sekunden ein Stück Webseite nach und aktualisierst so die Session. Sobald keine Requests mehr kommen hat derjenige die Seite verlassen.

Nachteil: es braucht Javascript.