Check Online (php)

  • Ich möchte ,das wenn sich ein User auf meiner Seite eingeloggt hat, das er dann als "Online" (auf meiner seite) angezeigt wird (für alle anderen User bzw. Gäste)! Das Online setzen ist kein Problem, allerdings wie kriege ich das hin, ihn offline zu setzen, d.h. wenn dieses meine Seite verlässt, das er dann wieder als Offline angezeigt wird (wenn es dafür einen Befehl bzw. eine Funktion gibt, dann habe ich sie nocht nicht gefunden)? Ich hoffe ich hab das so erklärt das man es versteht smiling smiley... Währe cool wenn mir jemand helfen könnte!Ach ja was ich noch sagen wollte, ich kann auf meinem Server keine Corn Jobs ausführen und ich möchte kein Javascript benutzen!

    MFG Henning

  • deine frage ist eigentlich ganz einfach zu beantworten ;)
    du setzt ja wohl irgendwo in der datenbank ein feld auf 1 oder sonstwas wenn der user online kommt... und wenn er den logout button klickt, wird das wieder auf 0 gesetzt.... noch besser ist, wenn du die zeit auch mitspeichern würdest.... dann hast du sagen wir mal eine verweilzeit von 5 minuten und änderst dementsprechend deine sql abfrage so, dass der user nur online angezeigt wird, wenn der letzte klick nicht länger als 5 min zurück liegt.... musst dann naürlich den timestamp ab und zu erneuern... pro klick zum beispiel oder 2. klick wie auch immer...
    könntest auch die sessions analysieren :D dann brauchste keine extra tabelle, was natürlich viel zu aufwendig und unnötig ist....

  • ja na klar würde das gehen ^^ . allerdings das mit dem logout button fällt schon mal weg .. weil wer drückt den denn bitte heut zu tage noch !? .. und das mit dem 5 minuten ding fällt auch weg ^^ will ne echtzeit anzeige habe ^^ .. ich weiß isn bissel viel verlangt, aber die von webspell . falls du das kennst... schaffen das auch irgendwie :D ^^ bin da nur net durchgestiegen wie die das machen :D

  • Moin!

    Um festzustellen, ob der PC!! eines Users noch online ist, benötigst du einen ständigen Datenaustausch zwischen Server und Client. So etwas macht nur Traffic, aber nicht wirklich Sinn, denn du kannst damit nicht feststellen, ob der User überhaupt noch vor dem PC sitzt, oder ob er evtl. eingepennt oder in die Badewanne gegangen ist.

    Der Weg über die Überwachung der Seitenaufrufe ist der einzig sinnvolle, wenn der User mehr als 5 Min. keine andere Seite angeklickt hat, dann ist er offline.

    G.a.d.M.

    Ronald

  • nein so mein ich das doch net .. ich will/möchte eine echtzeit anzeige ob der user auf meiner seite noch eingeloggt ist .. oder ob er dieses bereits verlassen hat .. NICHT ob der user (PC) noch online ist oder nicht ... löl .. !

  • wenn dus in "echtzeit" haben möchtest:

    1. ein stream aufbauen (z.B. ajax, perl geht auch)

    2 alle 2 sekunden in der datenbank ein timestamp erneuern... also immer fortlaufend....

    3. dann ein select machen, der diesen timestamp mit der aktuellen zeit vergleicht... ist das ding älter als 3 sekunden, ist der user offline....

    fertig hast du ein 2 sekunden verzögerten "echtzeit" online status.....
    dann würde mich ma interessieren, was du fürn server hast.... mit webspace kannste das glatt vergessen.... und ich möchte nicht wissen was da an traffic aufkommt......

    problem wird dann, wenn die ladezeit deiner seite (es gibt ja auch noch modem user) über mehrere sekunden dauert... dann wird der user auch als offline makiert...

    ich schätze das nichtmal 2% der menschen diesen lösungsansatz verwenden würden.... normal macht man das einfach über die session tabelle.... so ist das z.B. hier im forum auch ;)

  • ja ne da shaste recht ^^ also ich gehöre zu den anderen 98% ;) .. ja werd ich das wohl über dei session tabelle machen müssen :( obwohl dei jungs von webspell da snur mit php gemacht haben und nur einer spalte mit einem wert 0 oder 1 ^^ .. ich werd da wohl nie hinter kommen :D
    also muss ich das ungefähr so machen :

    [/quote]

  • also ich bin noch nicht ganz wach, aber zu dem code den du gepostet hast...
    warum machste das in 2 verschiedenen tabellen? kannste doch auch in einer machen...

  • naja hat den einfachen sinn .. das es übersichtlicher is für mich .. die Online Leutz und die Offline Leutz mit deren "Wie lange schon Offline" auseinader zu halten! Is eigentlich nicht das PRaktischste ^^ aber leichter Wartbar und so ..

  • Zitat von precoc

    nein so mein ich das doch net .. ich will/möchte eine echtzeit anzeige ob der user auf meiner seite noch eingeloggt ist .. oder ob er dieses bereits verlassen hat .. NICHT ob der user (PC) noch online ist oder nicht ... löl .. !


    Da hast du mich jetzt falsch verstanden, ich meinte schon, daß der PC des USers online und auf deiner Internetseite ist.
    Mein PC ist meistens ständig eingeschaltet und auch mit dem Internet verbunden.

    Wenn ich nun z.B. diesen Beitrag hier lese, dann zeigt micht dieses Forum zunächst einmal als online an, nach Ablauf einer Zeit X jedoch nicht mehr.
    Ich fahre gleich zu meinem Arbeitsplatz (30 km von hier entfernt). Wenn ich diese Seite nicht schließe, dann würde mich ein Script, welches ständig Daten zwischen Client und Server austauscht, weiterhin als "online" anzeigen. Der einzige, der hier dann aber noch online sein kann, wäre ein Einbrecher in meinem Haus.

    Von daher brauchst du für eine realistische Onlineanzeige Aktionen des Benutzers, kommen die nicht, dann ist er offline (weil er z.B. vor dem PC eingepennt ist).

    Alles andere macht keinen Sinn und nur Traffic.

    G.a.d.M.

    Ronald