Automatisches Ausloggen aus Login-Bereich

as333

Erfahrenes Mitglied
Hi,

ich habe einen Login Bereich für meine User erstellt.
Einige User vergessen natürlich sich ab und zu ordentlich abzumelden und schließen nur den Browser.
Das habe ich mit Hilfe des Unix Timestamp gelöst, sodass alle Leute die nach 5 Minuten inaktivität ausgeloggt werden.

Nur das Problem besteht darin, dass wenn ein User nur den Browser schließt er trotz der Abfrage so lange eingeloggt bleibt bis ein anderer User auf die Startseite geht. Erst dann wird er auch aus der Datenbank gelöscht.

Gibt es hierbei eine Möglichkeit dass das automatisch geschehen kann?

Und wenn sich jemand weiteres einloggt, soll erscheinen das sich ein weiterer User eingeloggt hat.
Muss man hierfür immer die aktuelle Seite aktualisieren oder gibt es ne Möglichkeit das es eingeblendet werden kann ohne das der User etwas machen muss?

Aber wichtiger ist erstmal die Sache mit dem automatischen löschen aus der Datenbank.
 
Gibt es hierbei eine Möglichkeit dass das automatisch geschehen kann?

Das geht bestimmt über einen Garbage-Collector von PHP, aber da fehlt mir das Wissen. Zumal ich glaube, dass dieser nicht alle 5 Minuten läuft.
Was aber alle paar Minuten laufen kann sind Cronjobs, die eine PHP auf deinem Server "anstubsen" welche alle Sessions löscht, die älter als die Lebenszeit sind. Gilt allerdings nur sofern du eine eigene Sessionverwaltung hast. Also: Schwierig!

Einfacher gehts sicherlich über JavaScript das bei einem onUnload (http://de.selfhtml.org/javascript/sprache/eventhandler.htm) kurz per AJAX eine PHP anstubst, die die Session löscht. Bedenke aber, dass nicht jeder JS aktiviert hat und das onUnload bei jedem Seitenwechsel aufgerufen wird (behebbar durch geschickte Framesets).

Und wenn sich jemand weiteres einloggt, soll erscheinen das sich ein weiterer User eingeloggt hat.

Worin liegt hier der Sinn?
 
Zuletzt bearbeitet:
Hi ZodiacXP,

an JavaScript hatte ich auch schon gedacht, bin da aber wie du auch geschrieben hast wegen dem deaktivieren von JavaScript abgekommen.
Muss mir mal anschauen wie das mit JavaScript geht, weil JavaScript kann ich noch nicht.

Worin liegt hier der Sinn?
Ich möchte dem eingeloggten User zeigen dass sich ein neuer User einloggen möchte, und er in 5 Minuten ausgeloggt wird.
 
Hallo,

ich habe noch eine weitere Frage.

Ist es möglich das wenn man ausgeloggt werden soll das dies komplett automatisch geschieht?
Weil im Moment muss immer noch die Seite manuell aktualisiert werden.
Es müsste die Seite voll automatisch ohne fremde Einwirkung eines User aktualisiert werden und dann automatisch auf eine weitere Seite weitergeleitet werden, sodass man ausgeloggt ist.

Bin über alle Hinweise froh, da ich im Moment wirklich nicht weiter komme.
 
Hi,

erstmal danke für die Hinweise.
Aber ich werde daraus nicht so ganz schlau.

Wenn ich mit Hilfe von Meta refresh die Seite aktualisieren lasse wird sie ja permanent aktualisiert und somit würde bei mir jedes Mal in die Datenbank geschrieben das der Benutzer noch aktiv ist.
Die Seite soll sich aber erst automatisch aktualisieren wenn sich ein weiterer User versucht anzumelden.

Oder bin ich vielleicht mit dem aktualisieren auf dem falschen Weg?
Es soll so funktionieren das wenn sich ein weiterer User versucht anzumelden der aktuelle User voll automatisch abgemeldet wird.
Für den Zeitpunkt bei dem der User abgemeldet werden soll wird bei mir bereits in die Datenbank ein Unix Timestamp geschrieben.
Dieser wird verglichen ob er kleiner ist wie die aktuelle Zeit und dann wird der User abgemeldet.
NUr das funktioniert bei mir zur Zeit nur so wenn man manuell die Seite aktualisiert.
Wenn kein weiterer Benutzer versucht sich anzumelden soll es nicht automatisch aktualisiert werden, da dann ansonsten jedes Mal in die Datenbank die aktuelle Zeit + x Minuten geschrieben werden.

Gibt es da vielleicht eine einfache Möglichkeit dies zu realisieren.
 
Wenn ich das jetzt richtig verstanden habe, dann kann sich ein User einloggen.
Für maximal 5 Minuten. Wenn die 5 Minuten abgelaufen sind, soll er automatisch ausgeloggt werden?
Wenn innerhalb der 5 Minuten ein anderer User sich einloggt, wird der erste User rausgeschmissen?

Irgendwie raff ich nicht, was Du genau vorhast.
 
Du hast das richtig verstanden. Also den Ablauf was passieren soll.
Wenn sich kein weiterer versucht anzumelden soll der erste User so lange drin bleiben bis das er nicht mehr aktiv ist und somit keine neue Zeit in die Datenbank geschrieben wird.
Wenn jedoch ein weiterer User sich versucht anzumelden soll dieser nach den x-Minuten automatisch rausgeschmissen werden.

Ich weiß es ist nicht besonders sinnvoll nur immer einen User sich anzumelden lassen.

Es müsste aber doch mit Hilfe von PHP machbar sein, oder?
 
Zurück