Online Status von User ausgeben

Hi Leute,

ich stehe vor folgendem Problem:
Ich möchte den Onlinestatus von Usern ausgeben. Wie mach ich das am besten?

MfG

Speicher außer der Sessionid in der Datenbank auch die Zeit des letzten Seitenaufrufs.
Les dann einfach aus der Datenbank die Einträge aus, die eine Sessionid gespeichert haben, und deren letzter Seitenaufruf nicht länger als bsp. 5 Minuten zurückliegt.
Diese User nennst du dann online :smiley:

Ok, das ist schon mal ein guter Ansatz, doch jetzt hab ich ein Problem. Wie schreib ich dann am besten das Script? Also ich brauch die momentane Zeit und die des letzten Seitenaufrufs, dann die aktuelle zeit - die des letzten Seitenaufrufs Ergebnis < 5 -> online?
Aber die Variante ist doch relativ Serverlastig? Da ständig Daten in die Datenbank geschrieben werden?

hast du schon mal die DB eines Forums gesehen -.-

durchaus -.-" halt die von phpbb2
ok dann werd ich das mit der DB machen
danke für den Denkanstoß

Diesen einen Zugriff merkst du gar nicht…

Beim Seitenaufruf eines Users, am Besten direkt beim Überprüfen der Session

mysql_query('UPDATE deineusertabelle SET lastvisit="'.time().'"');

Beim abfragen der onlineuser:

Und alle User, die du dann zurückbekommst sind offiziell online.

Danke für das Script! :hail:

das stimmt so weit…nur MySQL/PgSQL haben eig. Funktionen dafür:

UPDATE deineusertabelle SET lastvisit=NOW()
SELECT * FROM deineusertabelle WHERE sessionid AND lastvisit > NOW()-18000

ist 18000 nicht zu viel… 5*60=300 o.O

@Steditor: TIME() gibts unter MySQL zwar auch, aber unter PgSQL nicht…da ist TIME eine Konstante…

So wie ich time() verwendet habe, ist es auch die php Funktion.

das Stimmt, ich hab versehentlich 5 Stunden genommen o.0

ich hab irgendwo ein Tutorial dazu mal gehabt. Ich suchs mal und poste es hier dann, da gehört nämlich bei einem anspruchsvollen Skript noch etwas mehr dazu.

du musst natürlich bei jeder Seite dann ganz am Anfang (aber nach session_start() natürlich) erstmal abfragen, ob ein solcher Datensatz mit diesem User schon existiert und dann entweder einfügen oder updaten. Das würde dann in etwa so aussehen:

[code]if($_SESSION[‘user_id’] == true) {
$result = mysql_query(“SELECT * FROM users_loggedon WHERE user_id = '” . $_SESSION[‘user_id’] . “’”);
$user_listed = mysql_fetch_array($result);

if($user_listed == false) {
$query = mysql_query(“INSERT INTO users_loggedon(user_id, last_action_at) VALUES(’” . $_SESSION[‘user_id’] . “’, NOW())”);
} else {
$query = mysql_query(“UPDATE users_loggedon SET last_action_at = NOW() WHERE user_id = '” . $_SESSION[‘user_id’] . “’”);
}
} else {
// Hier koenntest du dann noch die Gaeste mitloggen fuer unsren Schaeuble^^
}[/code]
$_SESSION[‘id’] ist dabei die User-ID, in der Tabellenspalte user_id wird diese dann gespeichert, die Spalte last_action_at ist für den Zeitstempel des letzten Seitenaufrufs vorgesehn. Man sollte außerdem natürlich immer die Spalte id haben, die sich mit jedem Datensatz automatisch erhöht, sodass man jeden Datensatz eindeutig identifizieren kann - auch wenn schon user_id eigentlich eindeutig ist. Du kannst dann noch die Spalte last_action hinzufügen, in der du die zuletzt aufgerufene Seite mitloggst.

Das Tutorial kommt wie gesagt noch, wenn ichs finde. Ansonsten hoffe ich, dass ich das alles verständlich erklärt hab. Wenn nicht, einfach nochmal nachfragen - kostet schließlich nichts :wink:

Hab das Tutorial gefunden - war gleich der erste Treffer wenn man bei Google nach “User Online Tutoria PHP Skript” sucht :smiley: Ist echt gut beschrieben wie ich finde
tut.php-quake.net/online.html

Danke für deine Mühe.
Ich werd mir das Teil gleich mal anschauen
MfG