Autor |
Nachricht |
LioGetz
Threadersteller
Dabei seit: 24.03.2003
Ort: Aachen
Alter: 44
Geschlecht:
|
Verfasst Do 21.06.2007 15:30
Titel [PHP] Online-User Anzeige |
|
|
Hi @ all,
ich hätte ne Frage zur Vorgehensweise.
Ich habe ne Seite in der sich die User einloggen können. Diese User haben auch ne Freundesliste (das übliche System: Einladung schicken, der "Freund" kann die Einladung dann ablehnen oder annehmen).
Ich würde gerne, dass die Freunde von z.B. "Max Mustermann" bei Max in ner Online-Liste angezeigt werden (also die, die online sind ).
Wie gehe ich am besten vor, um zu prüfen ob ein User on ist oder nicht?
Ich hab mir folgendes überlegt:
1. Beim einloggen wird ein Timestamp gespeichert.
2. Der wird bei jedem Klick aktualisiert.
3. Dann muss es noch irgendwo ne Abfrage geben => Wenn letzter TS kleiner als jetziger TS-600 (=10min) dann offline.
Soweit ok? Falls ja, wie setz ich das um? Soll/Muss der TS in ner DB gespeichert werden (z.B. bei den Userdaten), oder reicht es den irgendwie per Session-Variable mit zu führen und abzugleichen ?!
Und wo setz ich die aktualisierung bei jedem Klick. Bei jeder Seite ganz zu Anfang (da wo ich die Session abfrage ob der User eingeloggt ist ?! )
Und wo setz ich die Afrage mit der "Berechnung"...
Vielleicht hat ja jemand nen Denkanstoß...
Danke im voraus
CU
Lio
|
|
|
|
|
SPL1FFSTAR
Dabei seit: 04.06.2007
Ort: -
Alter: -
Geschlecht:
|
Verfasst Do 21.06.2007 15:53
Titel
|
|
|
also, ich würde es so machen das du dem timestamp in den userinformationen desjenigen speicherst. wenn du ihn in der session variable speichers musst du auch noch seine sessionid speichern um überhaupt auf den darin gespeicherten timestamp zugreifen zu können -> umweg.
einfach nur auf jeder seite ne update.php includen wo einfach nur drinsteht "UPDATE timestamp IN users WHERE id = ".$_SESSION['userid'].""
dann einfach "SELECT * FROM users WHERE timestamp >= time()-600 AND buddyid = ".$_GET['buddyid']
|
|
|
|
|
Anzeige
|
|
|
rob
Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht:
|
Verfasst Do 21.06.2007 23:12
Titel
|
|
|
Code: | SELECT * FROM users WHERE timestamp >= time()-600 AND buddyid = ".$_GET['buddyid'] |
Vom Prinzip her natürlich OK.
Aber in jedem Fall muß das abgesichert werden, weil sonst ein Angriff per SQL-Injection möglich ist.
Code: | "SELECT * FROM users WHERE timestamp >= time()-600 AND buddyid = " . mysql_real_escape_string( $_GET['buddyid'] ); |
Alle Daten, die von außen kommen, müssen immer geprüft und ggf. bereiniget werden, bevor sie in irgendwelche Abfragen eingebaut werden.
Die Funktion mysql_real_escape_string() muß eigentlich immer (mit ganz wenigen Ausnahmen) aufgerufen werden, wenn man Daten von außen, in ein Query einbaut.
|
|
|
|
|
dastef
Dabei seit: 03.11.2003
Ort: -
Alter: -
Geschlecht:
|
Verfasst Fr 22.06.2007 08:08
Titel
|
|
|
zudem entweder auf nen Integer Typecasten, oder Anführungs-
zeichen aussen rum - sonst fliegt dir das Query um die Ohren
wenn jemand nen String reinpackt.
|
|
|
|
|
LioGetz
Threadersteller
Dabei seit: 24.03.2003
Ort: Aachen
Alter: 44
Geschlecht:
|
Verfasst Fr 22.06.2007 13:32
Titel
|
|
|
jepp, danke für den denkanstoß.
ein problem hab ich dann aber noch.
wenn man sich einloggt wird der Timestamp gesetzt, und bei jedem klick auf ne seite aktualisiert...wenn dann 10min nix passiert, dann wird man als offline angezeigt.
aber was soll ich machen wenn man sich manuell ausloggt, d.h. auf den logout-button drückt? ich könnte dann den TS auf Null setzen, aber so könnte ich nicht mehr abfragen wann der letzte login war weil die angabe ja dann gelöscht ist...und dafür ne extra spalte machen wo ich den wert speichert ??? geht das nicht "besser" ?!
Thx
CU
Lio
|
|
|
|
|
pRiMUS
Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht:
|
Verfasst Fr 22.06.2007 13:35
Titel
|
|
|
speicher die spalte des letzten logins in die usertabelle, da gehört sie eigentlich hin. diese user online funktion benutzt du in einer extra tabelle.
|
|
|
|
|
LioGetz
Threadersteller
Dabei seit: 24.03.2003
Ort: Aachen
Alter: 44
Geschlecht:
|
Verfasst Fr 22.06.2007 13:59
Titel
|
|
|
auch ne lösung...danke - ich werd mal was basteln...
|
|
|
|
|
|
|
|
Ähnliche Themen |
User Online Script gesucht
User Stylesheet..
user-registrierung
Php User Berechtigung
verzeichnis für jeden user
User in Google einbauen?
|
|