Wow... Zig Diskussionen und keine geht darauf ein, wie man das "in der Regel" löst...
Also:
Binde ein Script in ALLE Seiten Deines Projektes ein (z.B. im Header oder per include), das folgendes tut:
- Speichere in einer Tabelle die Benutzernamen + User-ID + aktuellen Timestamp ab
- Lösche direkt danach alle Einträge aus der Tabelle, deren Timstamp älter als z.B. 3-5 Minuten ist
Selectiere dann an gewünschter Stelle alle Datensätze aus dieser Tabelle (Distinct) als Liste und Du hast, was Du brauchst. Die Anzahl der Online-Nutzer kannst Du so auch ausgeben.
"Gerade online" bezieht sich dann auf die letzten 3-5 Minuten. Mehr geht nicht, siehe andere Diskussionen zu Deinem Thema. So machen das in der Regel ALLE anderen Gerade-Online-Anzeigen auch.
Um es genauer hinzubekommen, kannst Du auch per AJAX oder notfalls in einem iFrame ein Script einbinden, das sich z.B. alle 30-60 Sekunden reloaded und den Datensatz aktualisiert. Dann hast Du auch noch die als Online, die die Seite zwar geöffnet haben, aber seit mehr als 3-5 Minuten nichts mehr AKTIV gemacht haben.
Nutzer, die die Seite verlassen haben, werden dann nach 3-5 Minuten aus der Tabelle gelöscht und so lange ggf. noch als online angezeigt. Wenn sie sich AUSLOGGEN, kannst Du ja gleich die Datensätze aus der Tabelle löschen. Beim schließen des Browsers ohne ausloggen, logischerweise nicht.
Gruß,
Andreas