PHP Best Practice verfolgt die angemeldeten Benutzer

Ich möchte Benutzern zeigen, wer als Teil eines Kommentarsystems angemeldet ist. Was sind bewährte Methoden, um die Benutzer im Auge zu behalten? Zum Beispiel:

Behalten Sie alle Sitzungen im Auge und markieren Sie sie dann als geschlossen. Oder löschen Sie Benutzer beim Abmelden und verfolgen nur aktive Benutzer.

Ich denke, ich sollte eine Tabelle mit Benutzer-ID, Zeit angemeldet, Zeit abgemeldet und / oder Status erstellen. Ist das der richtige Weg oder gibt es einen alternativen Ansatz zum Verfolgen von Sitzungs-IDs? Wenn Sie eine Tabelle verwenden, ist es sinnvoll, sessionid beizubehalten. Sollte ich eine Zeile löschen, wenn die Sitzung nicht mehr aktiv ist, muss das Feld whenloggedout negiert werden.

Es gibt eine Anmeldung, mit der sich die Benutzer, die sich anmelden, einfach nachverfolgen lassen. Es ist jedoch schwieriger, die Abmeldung von Benutzern nachzuverfolgen, da ihre Sitzung durch einen Absturz des Browsers usw. unterbrochen werden kann.

Ist es empfehlenswert, angemeldete Benutzer zu berücksichtigen, solange sie die Sitzung nicht zerstört haben. FB und Google Mail lassen Sie beispielsweise fast unbegrenzt angemeldet - oder sollte es ein Zeitlimit seit der letzten Aktivität geben? Die Idee, bei jeder Aktivität vor Ort an diesem Tisch zu speichern, ist nicht ansprechend.

Im Moment denke ich über Folgendes nach:

<code>create table loggedin (userid (int), whenloggedin (datetime), whenlogged out (datetime), loggedin(tinyint))
</code>

wobei letztere entweder auf 0 gehen, wenn das Abmelden nicht null ist, oder nach einer längeren Zeitspanne wie 24 Stunden. Ich stelle mir FB vor, während Sie für längere Zeit angemeldet bleiben, auch die Aktivitäten für Chatzwecke usw. verfolgen, aber nicht sicher. Ich denke auch daran, die Tabelle erweitern zu lassen, anstatt geschlossene Sitzungen zu löschen, aber vielleicht ist das ein Fehler.

Wäre dieser Ansatz angemessen oder gibt es einen besseren Weg. Vielen Dank für Ratschläge.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage