Hallo,
wie schreibe ich am besten ein user online Script in PHP, wo der Nickname des eingeloggten Besuchers angezeigt wird?
Ich habe schon daran gedacht, das beim einloggen der Nickname in einer Datenbank, oder einer Textdatei gespeichert wir und dann auf der Homepage angezeigt wird. Und sobald man dann Logout klickt, wird der Name wieder gelöscht. Aber wenn sich jemand nicht ausloggt, sondern nur das Fenster schließt, bleibt der Nickname ja stehen, und das möchte ich nicht.
Pff so auf Anhieb keine Ahnung, ich überleg mal vielleicht fällt mir da was simples ein.
Also hab mir da mal was überlegt. Ist eigentlich voll beschissen das Script und nicht genau (wobei das sowieso nicht geht) aber ich denke der Zweck heiligt die Mittel.
Das Problem ist doch, das PHP Serverseitig funzt und man etwas an den Server senden muss. Das bedeutet, wenn jemand den Browser schließt, müsste er was senden das den Server sagt "ich bin weg" oder so. Ich kenne aber keine Funktion die sowas macht. Wie wäre es denn wenn du immer überprüfen würdest ob sich der User noch irgendwo auf der Seite befindet? Also ich meine des so. Du legst eine Tabelle an in der Nicks und Zeiten eingetragen werden können. Nun kommt ein User auf die Seite, es wird überprüft ob der der schon in der Tabelle steht, wenn er dies tut dann wird bei seinem Nick die Zeit aktualisiert. Steht er nicht drin, wird sein Nick und die Uhrzeit (also jetzige) in die Tabelle reingeschrieben. Dieser Text müsste überall auf jeder Seite vorhanden sein damit immer die Tabelle aktualisiert werden kann.
Die Ausgabe würde so erfolgen, das man nun alle Nicks ausgibt die in der Tabelle stehen. Da aber nun auch Nicks drin stehen von denen Besitzer garnicht mehr online sind, würd ich vorschlagen, werden die Nicks deren Zeit > 10 Minuten hinaus ist, das die gelöscht werden. Das Problem ist, dass der User nicht mehr angezeigt wird, obwohl er noch auf der Seite ist, aber sobald der User sich auf der Seite umherbewegt wird die Tabelle wieder aktualisiert. Also fürs erste würde ich des so versuchen. Sicher gibs andere Lösungen aber mir fällt im Moment die ein.