Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Stimmt, so kann man den Satz auch sehen. Ich meinte, jedem User wird immer dasselbe _eigene_ Bild zugeordnet ;-) also das, was du auch nochmal ausführlicher geschrieben hast.
Du hast doch ein Attribut namens "isOnline". Frag das doch einfach ab, also ob online zutrifft und nur dann wird das Ganze auch angezeigt.
Du kannst ja gleich in der SQL-Abfrage den Status mit einbringen und dann sind im Ergebnis-Array nur die Leute, die Online sind.
Den Timestamp löschen wird schwierig. Denn wenn ein User sich nicht abmeldet sondern nur den Browser/das Fenster schließt wird der Abmeldevorgang ja gar nicht ausgeführt.
Das einzige was mir bis jetzt dazu einfällt ist das Du auf jeder "geschützten Seite" (die nur nach Anmeldung erreichbar ist) zum einen den Timestamp in der Tabelle mit der aktuellen Uhrzeit überschreibst. Außerdem müßtest Du prüfen ob es in der Tabelle Einträge gibt bei denen die Differenz zwischen dem gespeicherten Timestamp und der aktuellen Uhrzeit z.B. größer als 10 Minuten ist. Wenn ja werden diese Einträge alle aus der Tabelle gelöscht.
Somit hast Du dann in der Tabelle wirklich nur die Daten der User die wirklich Online sind (mit max. 10 Minuten Abweichung).
Nachteil es wird halt ziemlich viel auf die Tabelle zugegriffen.