CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
30.06.2008, 17:17:29
|
Anfänger
|
|
Registriert seit: Jun 2008
Alter: 36
Beiträge: 4
|
|
Prüfen ob bestimmte Session-ID existiert
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
|
30.06.2008, 17:52:44
|
|
Senior Member
|
|
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
|
|
AW: Prüfen ob bestimmte Session-ID existiert
Hi und erstmal herzlich willkommen im Forum.
Also prinzipiell mache ich das so: Jedesmal wenn eine PHP-Seite geladen wird, dann aktualisiere ich den Timestamp. So sehe ich wann der Benutzer das letzte mal was gemacht hat und so kann ich entscheiden ob er noch aktiv was macht oder ob er bereits weg ist.
In wie fern sich das mit deinem Chat realisieren lässt müsste man noch checken. Aber ich denke auch das ist auf jeden Fall möglich. Aber um was für ein Chat handelt es sich denn? Komplett in PHP geschrieben? Wenn dies der Fall ist, dann brauchst du ja einen Reload um die Texte der anderen aus der DB zu lesen, in diese Moment könntest den Timestamp aktualisieren. So kannst dann sagen, dass alle die älter wie 5 Minuten sind einfach nicht mehr on sind. Wenn du das jede Sekunde aktualisierst, könntest das z.B. auf 10 Sekunden herunterschrauben..
Ich hoffe ich konnte dich etwas inspirieren, damit du der Lösung näher kommst.
Domi
__________________
the best way to be ready for the future is to invent it
|
30.06.2008, 18:02:03
|
Anfänger
|
|
Registriert seit: Jun 2008
Alter: 36
Beiträge: 4
|
|
AW: Prüfen ob bestimmte Session-ID existiert
Danke für die schnelle Antwort
der Chat funktioniert so:
Über Ajax wird ein Script aufgerufen, welches die Posts aus der datenbank holt
also die seite wird nie komplett neu geladen
die Fragen bleiben beide offen:
1. Kann man mit php feststellen, ob eine bestimmte Session-Id existiert
und
2. Kann man beim Verlassen der Chatseite irgendwie ein Löschbefehl an die Datenbank senden
mit Timeouts wollte ich eben nicht arbeiten, weil die sehr unzuverlässig sind.
Ich habe ja einen eingebunden, der nach 1 stunde checkt, ob der user noch aktiv ist
aber weiter runter wollte ich den timeout nicht setzen (habe selber mal einen langen Text verfasst und nachdem ich auf senden geklickt habe, war alles weg, weil meine Session abgelaufen war [zurück] ging auch nicht mehr (ist schon etwas länger her aber da hab ich mir gesagt, sowas schreib ich nicht, auch nicht, wenn die posts nur 20 wörter lang sind)
|
30.06.2008, 18:08:16
|
|
Senior Member
|
|
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
|
|
AW: Prüfen ob bestimmte Session-ID existiert
Na, das ist schon klar, aber die Beiträge werden ja eh alle x-Zeiteinheiten aktualisiert, in dem Zug aktualisierst du auch den Timestamp. Wenn der Benutzer keine Beiträge mehr bekommt, dann ist er ja eh "draußen" .. so merkst innerhalb 2*x-Zeiteinheiten ob er noch da ist oder net.
Die anderen Fragen kann ich dir momentan net beantworten, würde mich da aber auch net auf eine Lösung versteifen.
Domi
__________________
the best way to be ready for the future is to invent it
|
30.06.2008, 18:12:39
|
Anfänger
|
|
Registriert seit: Jun 2008
Alter: 36
Beiträge: 4
|
|
AW: Prüfen ob bestimmte Session-ID existiert
ich glaube, ich hab gecheckt, was du meinst
werd ich gleich mal testen
darauf bin ich noch garnicht gekommen, wenn es wirklich das is, was ich denke
thx
|
30.06.2008, 19:26:17
|
Anfänger
|
|
Registriert seit: Jun 2008
Alter: 36
Beiträge: 4
|
|
AW: Prüfen ob bestimmte Session-ID existiert
jep, so gehts
dass ich da nicht selber drauf gekommen bin
hatte den timestamp nur beim schreiben vergeben, aber beim lesen gehts ja genauso
die Antwort auf meine Frage is jetzt zwar nicht mehr so wichtig
aber interessieren würds mich dennoch
also wenn da jemand was weiß, wie man die aktiven sessions auslesen kann,
war cool
|
30.06.2008, 20:57:17
|
|
Senior Member
|
|
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
|
|
AW: Prüfen ob bestimmte Session-ID existiert
Das ist son Punkt den ich über die Jahre gelernt hab .. man darf nicht auf ner Idee verharren, man muss sich auch mal auf andere Ideen einlassen :)
__________________
the best way to be ready for the future is to invent it
|
02.07.2008, 01:11:29
|
Anfänger
|
|
Registriert seit: Sep 2007
Beiträge: 44
|
|
AW: Prüfen ob bestimmte Session-ID existiert
Zitat:
Zitat von cIph3r
jalso wenn da jemand was weiß, wie man die aktiven sessions auslesen kann,
war cool
|
Sessions sind aus zu lesen - zum beispiel:
PHP-Code:
<?php
session_start();
$path = ini_get('session.save_path');
$handle = dir($path);
while ($filename = $handle->read()) {
if (substr($filename, 0, 5) == 'sess_')
{
$data = file_get_contents("$path/$filename");
if (!empty($data))
{
session_decode($data);
$session = $_SESSION;
$_SESSION = array();
echo "Session [" . substr($filename, 5) . "] <br>\n";
print_r($session);
echo "<br>\n\n";
}
}
}
?>
Von: http://phpsecurity.org/code/ch08-1
By einen shared host ist es besser dein eigenen session handler zu machen
|
02.07.2008, 10:05:26
|
SELFPHP Profi
|
|
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
|
|
AW: Prüfen ob bestimmte Session-ID existiert
Zitat:
Zitat von deedee
Sessions sind aus zu lesen - zum beispiel:
[...] php-code [...]
|
damit kannst die in einer session gespeicherten daten auslesen - ob die session noch aktiv ist (im sinne von "ob der user noch online ist"), steht auf einem anderen blatt.
Zitat:
Zitat von deedee
by einen shared host ist es besser dein eigenen session handler zu machen
|
das ist ein weit verbreitetes vorurteil / eine zu pauschale einschätzung. gute hoster verstehen ihr handwerk und erzielen durch die konfiguration des webspace eine höhere sicherheit, als das die meisten coder mit irgendwelchen selbstgebastelten skripten hinbekommen.
cx
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:46:34 Uhr.
|