mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 14.07.2020 23:31 Benutzername: Passwort: Auto-Login

Thema: [PHP] Online-User Anzeige vom 21.06.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [PHP] Online-User Anzeige
Autor Nachricht
LioGetz
Threadersteller

Dabei seit: 24.03.2003
Ort: Aachen
Alter: 40
Geschlecht: Männlich
Verfasst Do 21.06.2007 16:30
Titel

[PHP] Online-User Anzeige

Antworten mit Zitat Zum Seitenanfang

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 Grins ).

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 Grins
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
SPL1FFSTAR

Dabei seit: 04.06.2007
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 21.06.2007 16:53
Titel

Antworten mit Zitat Zum Seitenanfang

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']

Lächel
  View user's profile Private Nachricht senden
Anzeige
Anzeige
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 43
Geschlecht: Männlich
Verfasst Fr 22.06.2007 00:12
Titel

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden
dastef

Dabei seit: 03.11.2003
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Fr 22.06.2007 09:08
Titel

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden
LioGetz
Threadersteller

Dabei seit: 24.03.2003
Ort: Aachen
Alter: 40
Geschlecht: Männlich
Verfasst Fr 22.06.2007 14:32
Titel

Antworten mit Zitat Zum Seitenanfang

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 Grins
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
pRiMUS

Dabei seit: 09.09.2003
Ort: Vienna
Alter: 45
Geschlecht: Männlich
Verfasst Fr 22.06.2007 14:35
Titel

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
LioGetz
Threadersteller

Dabei seit: 24.03.2003
Ort: Aachen
Alter: 40
Geschlecht: Männlich
Verfasst Fr 22.06.2007 14:59
Titel

Antworten mit Zitat Zum Seitenanfang

auch ne lösung...danke - ich werd mal was basteln...
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen User Online Script gesucht
Php User Berechtigung
[PHP] User Weiterleitung Contentberiech
Email PHP-Skript - mehrere User pop3
PHP Login und Anzeige nach Benutzername und Passwort
Anzeige aktueller Menüpunkt in Navigation mittels PHP
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.