Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] - Online Status anzeigen (https://www.delphipraxis.net/122157-%5Bphp%5D-online-status-anzeigen.html)

Grolle 10. Okt 2008 12:25


[PHP] - Online Status anzeigen
 
Hallo,

weiß jemand einen vernünftigen Weg um den Online Status verschiedener angemeldeter
Personenen anzuzeigen. Wichtig: Wie regel ich das mit der Abmeldung (Nutzer schließt
einfach den Browser ohne Abmeldung).

Viele Grüße ...

// Verfügbar: Sessions, CronJobs, DB

jfheins 10. Okt 2008 12:36

Re: [PHP] - Online Status anzeigen
 
Du speicherst einfach, wann der Benutzer die letzte Seite angefordert hat.

Alle Benutzer, die in den letzten 4 Minuten eine Seite angeforodert haben, sind online.

So in etwa. Du hast immer eine Toleranzzeit, die du geben musst. Wählst du diese zu kurz, werden online-User offline angezeigt. Zu lang, und offline-User werden online gezeigt.

Da HTTP ein Verbindungsloses Protokoll ist, kannst du den genauen Zetpunkt, wann ein Benutzer den Browser zu macht, nicht festmachen.
(Evtl. könntest du da n paar Sachen mit Javaascript machen, aber so richtig schön ist das immernoch nicht ...)

Edit:
Javascript könnte dir insoweit helfen, dass du bei einer Karaanzzeit von bspw. 3 Minuten alle 2,5 Minuten nen Ajax-Request sendest, dass der Benutzer immernoch online ist.

Abmelden im OnClose-Ereignis ist beim Tabbed-Browsing suboptimal ;)

Balu der Bär 10. Okt 2008 12:37

Re: [PHP] - Online Status anzeigen
 
Hi,

also spontan würde ich sagen, wenn sich ein User anmeldet schreibst du seinen Nick und einen Timestamp in die Datenbank. Jedes Mal, wenn der User auf eine Seite klickt wird der Timestamp aktualisiert. Wenn der User sich ausloggt, entfernst du ihn aus der DB. Dann brauchst du nur noch überprüfen ob ein Timestamp älter als 5 oder 10 Minuten ist dann kennzeichnest du den User ebenfalls als ausgeloggt (würde dann zutreffen wenn er den Browser einfach geschlossen hat o.a.).

Larsi 10. Okt 2008 12:46

Re: [PHP] - Online Status anzeigen
 
Zitat:

Zitat von Balu der Bär
...entfernst du ihn aus der DP....

[OT] Warum muss der denn gleich aus der Delphi Praxis raus :zwinker: [OT]

Grolle 10. Okt 2008 13:05

Re: [PHP] - Online Status anzeigen
 
Hi,

danke, das ist glaube ich der richtige Ansatz. Da ich Ajax sowiso einsetzte kann ich darauf ganz gut aufbauen

Viele Grüße ...

Balu der Bär 10. Okt 2008 13:08

Re: [PHP] - Online Status anzeigen
 
Für was für ein System brauchst du die Funktion denn? Selbstgeschrieben? Vielleicht könntest du aus der viewonline.php des phpBB-Forensystems etwas Code "entnehmen" bzw. dir anschaun, wie die das machen.

Grolle 10. Okt 2008 13:10

Re: [PHP] - Online Status anzeigen
 
Hi,

ja das System ist selbst entwickelt, aber ich werd beim BB mal reinschauen :mrgreen:

Viele Grüße ....

jokerfacehro 10. Okt 2008 14:00

Re: [PHP] - Online Status anzeigen
 
also ich würd das problem mit ner session lösen und die daten in der DB speichern, das is am leichtesten.

hier sind mehrere lösungsansätze möglich:

1. wie gesagt user onlinestatus + timestamp speichern und toleranzzeit von 5min einbauen

2. du nutzt das onClose ereignis von javascript und rufst ne logoff funktion auf

beides zusammen ist ganz praktisch

du kannst timestamp und ipadresse genauso gut in ner textdatei speichern is aber etwas umständlicher


wenn du die onlinezeit genauer haben willst, denn bau ein unsichtbares iframe ein, dass alle paar sekunden die onlinezeit erneuert z.B. 30sek dann setzt du die toleranz auf 1min

jfheins 10. Okt 2008 14:45

Re: [PHP] - Online Status anzeigen
 
Zitat:

Zitat von jokerfacehro
2. du nutzt das onClose ereignis von javascript und rufst ne logoff funktion auf

Und wnn ich dann meherere Tabs offen habe, und eines schließe werde ich sofort ausgeloggt ? :gruebel:

Balu der Bär 10. Okt 2008 14:57

Re: [PHP] - Online Status anzeigen
 
Zitat:

Zitat von jokerfacehro
2. du nutzt das onClose ereignis von javascript und rufst ne logoff funktion auf

Dumm nur, wenn JavaScript standardmäßig deaktiviert ist. Ich hatte das nervige Problem erst gestern, wo eine Webseite einfach nicht bedienbar war, bis mir einfiel das ich ja mal NoScript deaktivieren könnte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:36 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz