Seite 1 von 3
Eingeloggte User ausgeben
Verfasst: 20.06.2004 00:27
von Fabse
Hallo!
Mein Problem ist, dass ich auf meiner Homepage die User die gerade Eingeloggt sind ausgeben will. Ich hab das jetzt ziemlich einfach gemacht. Und zwar so:
Wenn sich ein User einloggt, wird in der DB ein Eintrag auf 1 gesetzt. Wenn er sich wieder ausloggt, dann wird der Eintrag wieder auf 0 gesetzt. 1 == eingeloggt, 0 == ausgeloggt
Und jetzt wenn ich mein Browser Fenster schließe werde ich automatisch ausgeloggt, aber der Eintrag in der DB bleibt vorhanden!
Das will ich aber nicht weil es einfach zu unprofessionell ist! Deshalb will ich das anders lösen! Aber wie mach ich das am einfachsten?
Verfasst: 20.06.2004 01:06
von PhilippK
Schau dir mal die page_header.php und dort die Routine für "Who's online" an. Da wird dann z.B. folgende Abfrage verwendet (gekürzt):
Code: Alles auswählen
$sql = "SELECT u.username, u.user_id, u.user_allow_viewonline, u.user_level, s.session_logged_in, s.session_ip
FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s
WHERE u.user_id = s.session_user_id
AND s.session_time >= ".( time() - 300 ) . "
ORDER BY u.username ASC, s.session_ip ASC";
Gruß, Philipp
Verfasst: 20.06.2004 01:24
von Fabse
Hab ich mir durchgesehen! Kapier ich aber nit wirklich!

Verfasst: 20.06.2004 01:43
von PhilippK
Kannst du etwas genauer konkretisieren, woran es scheitert?
Gruß, Philipp
Verfasst: 20.06.2004 12:41
von Fabse
Ja, kann ich!
Ich verstehs nicht wie ich das Richtig einbau das es Funktioniert!
Wenn ich den Quellcode nicht versteh dann ist es für mich schwer dsa Teil richtig einzubauen! Das ist leider beim phpBB Code noch der Fall. Teilweise geht es ja schon aber manchmal nicht!
Verfasst: 20.06.2004 13:00
von PhilippK
Der SQL-Befehl gibt dir alle User aus, die in den letzten fünf Minuten aktiv waren (also genau die, die auch unter "Who is online" stehen). Als SQL-Abfrage an die Datenbank schicken und dann die Namen der User (username) ausgeben - und du solltest das haben, was du willst.
Gruß, Philipp
Verfasst: 20.06.2004 13:31
von Fabse
Ahh.
Ich benötige dafür aber auch die session_id! Oder? Wie bau ich die dazu ein?
Verfasst: 20.06.2004 13:34
von PhilippK
Einfach den SQL-Befehl so ausführen, wie er da steht (ggf. natürlich die Tabellen-Konstanten austauschen) - und fertig
Gruß, Philipp
Verfasst: 20.06.2004 13:40
von Fabse
Ich brauch das ja nicht fürs Forum sondern für meine HP! Und ich will nicht wissen wie viele User im Forum online sind, sondern wie viele auf der HP online sind!
Vielleicht hab ich es falsch erklährt. Und auf der Homepage schau mein Usertabe so aus:
Code: Alles auswählen
id int(255) Nein auto_increment
username varchar(255) Nein
password varchar(255) Nein
email varchar(255) Nein
birthday varchar(255) Ja NULL
rank varchar(255) Nein
reg_date date Nein 0000-00-00
homepage varchar(255) Nein
name varchar(255) Nein
location varchar(255) Ja NULL
job varchar(255) Ja NULL
icq varchar(9) Ja NULL
msn varchar(255) Ja NULL
hobbies varchar(255) Ja NULL
about_me text Ja NULL
gender varchar(255) Ja NULL
Muss ich da jetzt noch eine Sesssion_id Zeile einfügen?
Verfasst: 20.06.2004 15:31
von PhilippK
Du könntest ggf. deine Seiten in das phpBB-System mit einbinden (KB:phpbb_seite)
Ansonsten wirst du nicht herumkommen, einen ähnlichen Weg wie phpBB zu gehen: die Benutzer mit Zeitstempel in einen Tabelle schreiben, bei jeder Aktion den Zeitstempel aktualisieren und dann ein Limit setzen, ab wann du den User als offline ansiehst. Wenn der User den Browser schließt, bekommst du das i.d.R. nicht mit.
Gruß, Philipp