Tom: Einlesen aller Sessionen

Beitrag lesen

Hello,

Danke für den Hinweis, habe das Login auf Session-Array $_SESSION umgestellt. Werde das per Datenbank lösen, hatte nur gedacht es gäbe eine andere Lösung um festzustellen welcher User online ist.

Das geht bei MySQL auch realtiv unkompliziert:

in der DB stehen z.B. Username, Passwort und Session_ID der zugeteilten Session.

Beim Login wird die Session gestartet und die SessionID in die DB geschrieben.

Das macht man einfach mit

"update login set session_id = $session_id where username = $username and password = $password"

Anschließend auswerten, ob genau ein Datensatz betroffen war, sonst zurück zum Login.

Und wenn dann eine Seite aufgerufen wird, und eine Session-ID mitgeliefert wird, dann wird einfach

"update login set lastclick=NULL where session_id = $session_id"

aufgerufen.

Das Feld lastclick in der Tabelle ist die erste Timestamp-Spalte, wird also bei MySQL automatisch bei Änderungen an der Tabelle geführt.

Wenn man nun ein Select über die Spalte lastclick macht

$time = [Referenzzeitraum in Sek]; also z.B. 900 für die letzten 15 Min.

select id_login, session_id from login where unix_timestamp(lastclick) > unix_timestamp()-$time;

dann erhält man sofort alle User, die in den letzten 15 Minuten aktiv waren.

Solltest Du eine Solche Anzeige planen, in der die Usernamen der "aktiven" angezeigt werden, würde ich auf jeden fall das Einverständnis der user vorher einholen. Man könnte das entweder zur Teilnahmebedingungen machen, oder in der User-Datei (login) ein entsprechendes Flag setzen, das der User selber manipulieren darf: Onlineanzeige JA/NEIN.

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen