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