cIph3r
30.06.2008, 17:17:29
Hallo,
da meine Frage ziemlich speziell ist und ich beim suchen nie das gefunden hab, was ich brauch, frag ich also mal selber nach:
Mein Problem ist folgendes:
Ich habe in einer Datenbank gespeichert, welche user gerade online sind (für ein Chat).
Jeder user bekommt also eine Session beim Betreten der gesamten Seite und eine login-SESSION-variable, wenn er den chat betritt und wird dann in der datenbank erfasst.
Meldet er sich wieder ab, wird der Name auch aus der Datenbank entfernt.
Meldet er sich jedoch nicht ab, bleibt sein name in der datenbank und wird als online aufgelistet, ist es aber lange nicht mehr (nach 1h inaktivität ist ers zwar, aber das geht zu lange)
Und genau da ist das Problem:
Wie kann ich rausfinden, ob der User noch online ist.
Da gabs 2 Ansätze:
1. Ein Script ausführen, wenn der User den Chat verlässt, welches den Namen aus der DB entfernt.
Problem: php geht ja nur beim betreten der seite, nicht aber beim verlassen.
Also das wäre die elegantere lösung, hab aber keine Ahnung, wie das gehen soll.
2. Über Sessions:
Das geht zwar nur eingeschränkt, also wenn der Browser beendet wird oder eben über abmelden, aber ist die einzige alternative, die mir einfällt.
Die idee war, nicht nur den namen, sondern auch die Sess-Id zu speichern und dann regelmäßig zu prüfen, ob die Session-Ids aus der Datenbank noch auf dem Server existieren und ggf. dann die Namen aus der DB zu löschen.
Aber ich habe keine funktion in php gefunden, mit der ich überprüfen kann, ab eine bestimmte Session-ID auf dem server existiert.
Ich glaube, das war schon deutlich genug formuliert, aber ich fass es nochmal zusammen:
-User wird mit seiner SID zusammen erfasst und als online registriert.
-User meldet sich nicht ab, aber session wird beendet
Problem: Wie prüfen, ob die SID "80c94f533ce847d58a5d31ce1e607232" noch existiert.
Alternative:
Beim verlassen des Chats wird der Benutzer (wenn das irgendwie geht) aus der Datenbank gelöscht.
Noch kurz zur info:
Bei mir gibts keine Anmeldungen im klassischen Sinne
Also kein Passwort, sondern nur Nickname und los gehts.
Ich danke schonmal fürs lesen und evtl auch für ne gute Antwort
da meine Frage ziemlich speziell ist und ich beim suchen nie das gefunden hab, was ich brauch, frag ich also mal selber nach:
Mein Problem ist folgendes:
Ich habe in einer Datenbank gespeichert, welche user gerade online sind (für ein Chat).
Jeder user bekommt also eine Session beim Betreten der gesamten Seite und eine login-SESSION-variable, wenn er den chat betritt und wird dann in der datenbank erfasst.
Meldet er sich wieder ab, wird der Name auch aus der Datenbank entfernt.
Meldet er sich jedoch nicht ab, bleibt sein name in der datenbank und wird als online aufgelistet, ist es aber lange nicht mehr (nach 1h inaktivität ist ers zwar, aber das geht zu lange)
Und genau da ist das Problem:
Wie kann ich rausfinden, ob der User noch online ist.
Da gabs 2 Ansätze:
1. Ein Script ausführen, wenn der User den Chat verlässt, welches den Namen aus der DB entfernt.
Problem: php geht ja nur beim betreten der seite, nicht aber beim verlassen.
Also das wäre die elegantere lösung, hab aber keine Ahnung, wie das gehen soll.
2. Über Sessions:
Das geht zwar nur eingeschränkt, also wenn der Browser beendet wird oder eben über abmelden, aber ist die einzige alternative, die mir einfällt.
Die idee war, nicht nur den namen, sondern auch die Sess-Id zu speichern und dann regelmäßig zu prüfen, ob die Session-Ids aus der Datenbank noch auf dem Server existieren und ggf. dann die Namen aus der DB zu löschen.
Aber ich habe keine funktion in php gefunden, mit der ich überprüfen kann, ab eine bestimmte Session-ID auf dem server existiert.
Ich glaube, das war schon deutlich genug formuliert, aber ich fass es nochmal zusammen:
-User wird mit seiner SID zusammen erfasst und als online registriert.
-User meldet sich nicht ab, aber session wird beendet
Problem: Wie prüfen, ob die SID "80c94f533ce847d58a5d31ce1e607232" noch existiert.
Alternative:
Beim verlassen des Chats wird der Benutzer (wenn das irgendwie geht) aus der Datenbank gelöscht.
Noch kurz zur info:
Bei mir gibts keine Anmeldungen im klassischen Sinne
Also kein Passwort, sondern nur Nickname und los gehts.
Ich danke schonmal fürs lesen und evtl auch für ne gute Antwort