Wie erkenne ich, ob ein Benutzer ausgeloggt ist, in PHP?

8

Nachdem sich der Benutzer erfolgreich angemeldet hat, speichere ich login = true in der Datenbank. Aber wie überprüfe ich, ob der Benutzer sich abgemeldet hat, indem ich den Browser geschlossen habe, ohne auf den Logout-Button zu klicken? Und wie kann ich Benutzer, die für 10 Minuten inaktiv waren, auf die Anmeldeseite umleiten?

Ich verwende PHP und MySQL. Jede Hilfe wäre willkommen.

BEARBEITEN: Entschuldigung, wenn meine Frage nicht klar ist. Ich habe Sitzung verwendet, um zu speichern, ob sie eingeloggt sind oder nicht. Aber jetzt möchte ich die Informationen in der Datenbank speichern, damit ich ihren Status auf anderen Seiten anzeigen kann. Angenommen, user1 hat 3 Freunde. Bei der Anzeige aller seiner Freunde möchte user1 wissen, ob seine Freunde online oder offline sind. Das ist was ich will. Irgendwelche Ratschläge?

    
neophyte 20.05.2009, 13:32
quelle

12 Antworten

13

2017 edit: Heutzutage ist es am besten, wenn Sie Websockets verwenden, um die Präsenz auf einer Seite / Site zu verfolgen.

Sie können nicht erkennen, wenn ein Benutzer seinen Browser schließt oder mit PHP von Ihrer Website aus navigiert. Die JavaScript-Techniken sind so weit von der Garantie entfernt, dass sie nutzlos sind.

Stattdessen ist es am besten, die letzte Aktivitätszeit jedes Benutzers zu speichern.

  • Erstellen Sie eine Spalte in Ihrer Benutzertabelle in den Zeilen 'last_activity'.
  • Wenn ein Benutzer eine Seite lädt, aktualisieren Sie die letzte_Aktivität auf die aktuelle Zeit.
  • Um eine Liste der Online-Benutzer zu erhalten, fragen Sie einfach die Datenbank nach Benutzern mit last_activity-Werten ab, die jünger sind als 10/20 / was auch immer vor Minuten.
ceejayoz 20.05.2009 13:50
quelle
8

Speichern Sie den Zeitstempel jeder Aktivität des Benutzers. Wenn diese Zeit vor mehr als 10 Minuten liegt, loggen Sie sich ab.

In PHP könnten Sie so etwas tun:

%Vor%

Dasselbe kann stattdessen in der Datenbank vorgenommen werden. Dort könntest du sogar eine Liste von Nutzern bekommen, die "gerade" online sind.

    
Gumbo 20.05.2009 13:56
quelle
2

Sie fragen sich, ob Sie erkennen können, ob ein Benutzer seinen Browser geschlossen hat. Sie können irgendwie mit Javascript, aber ich würde nicht darauf verlassen (seit Javascript ist einfach zu deaktivieren) Aber Sie können nicht mit PHP, da PHP nur ausgeführt wird, wenn Sie eine Seite anfordern. Nicht wenn die Seite geöffnet ist.

Um sicher zu gehen, sollten Sie die letzte Aktivität des Benutzers verfolgen und wenn es einige Minuten (5/10) vergangen ist, dann nehmen Sie an, dass der Benutzer weg ist. Wenn er aber wieder etwas macht (zum Beispiel nach 6 Minuten), ist er wieder online.

    
Ólafur Waage 20.05.2009 13:54
quelle
1

Wenn Sie versuchen, die online aktiven Benutzer zu verfolgen, sollten Sie möglicherweise eine Sitzung für den einzelnen Benutzer verwenden. Speichern Sie die letzte Aktivität, anstatt login = true in der Datenbank zu speichern, um ihren Status für Sie oder andere anzuzeigen Zeit für den Benutzer. Wenn Sie Ihre Liste der Online-Benutzer aufrufen, erstellen Sie Ihre SQL-Abfrage, um nur Benutzer mit 'Last_activity' innerhalb der letzten 10 Minuten zurückzugeben.

    
Eddy 20.05.2009 13:51
quelle
0

Es ist vielleicht besser, login = true in einer Sitzungsvariablen zu speichern, um zu überprüfen, ob der Benutzer eingeloggt ist. Dies würde die meisten Ihrer Probleme lösen;)

    
Ropstah 20.05.2009 13:33
quelle
0

Normalerweise würden Sie solche Informationen in Sitzungen einfügen.

%Vor%

Wenn Sie sich abmelden möchten, tun Sie Folgendes:

%Vor%

Weitere Informationen zu den Sitzungen hier und Tutorial .

    
MrHus 20.05.2009 13:35
quelle
0

Warum verwenden Sie dafür keine Session oder Cookies, anstatt sie in die Datenbank einzufügen? Sie können die Cookies mithilfe der Funktion setcookie () festlegen, oder Sie können eine Sitzung vaibel machen und den Wert darin speichern.

    
developer 20.05.2009 13:36
quelle
0

Sie würden es besser finden, die Sitzung zu verwenden, um den Anmeldestatus zu überwachen.

Lesen Sie diese Informationen zu Sitzungen

    
gacrux 20.05.2009 13:36
quelle
0

AFAIK gibt es keine Möglichkeit für Sie, zu überprüfen, wenn eine Person das Browserfenster schließt (oder Ihre Seite verlässt, um zu einer anderen zu wechseln), so dass Sie die Aktivität wie oben vorgeschlagen überprüfen müssen.

    
Michal M 20.05.2009 13:54
quelle
0

IMHO der beste Weg ist, Zeitstempel der letzten Aktivität in DB bei jeder Aktualisierung des Benutzerdatensatzes zu speichern. Nach dem Abmelden oder Timeout (Timeouts mit Cronjob beibehalten) setze es einfach auf Null und benutze es als Flag.

%Vor%

Manchmal müssen Sie etwas sagen. like "last seen on ...", dann lass die letzte Aktivität und füge einfach ein boolesches Flag (tinyint) logged_in zu deiner Benutzertabelle hinzu.

    
Jet 20.05.2009 16:23
quelle
0

Sie können dies mit einer Kombination von Möglichkeiten tun, höchstens 2, ich schätze, mit der letzten Aktivität, kombinieren Sie es mit jQuery, um nach Inaktivität zu suchen, das sind keine Maus- oder Tastaturereignisse für einige Zeit, Sagen Sie etwa 10 bis 20 Minuten, dann, sobald die Leerlaufzeit bestätigt ist, führen Sie einen AJAX-Aufruf an eine PHP-Datei durch, die Ihre Datenbanktabelle aktualisiert, die den Benutzer offline zeigt.

Sie können beginnen mit:

%Vor%     
Nwachukwu A. Nnaemeka 22.06.2014 13:45
quelle

Tags und Links