Session-Verwaltung - Daten extrahieren
Matthias
- php
Hallo...
ich möchte bei meinen Benutzern einer Seite die Möglichkeit geben, zu sehen, wer noch alles online ist. Dazu lasse ich bei meiner Session-Verwaltung die Sessions in einem eigenen Verzeichnis verwalten - der Header jeder Datei sieht als so aus:
@session_save_path ("<MEINPFAD>");
@session_start ();
$ipaddr = $REMOTE_ADDR;
@session_register("ipaddr");
Mit einem einfach auslesen des Verzeichnisses weiss ich also, wieviel Benutzer sich gerade auf der Site befinden. Wie kann ich diese Dateien nun elegant auslesen, um sie in einer "wer ist online" Tabelle darzustellen?
gruß
PS: Um nicht zuviele "Leichen" zu haben, lösche ich die Session-Dateien einfach, wenn Ihr Erstelldatum länger als 20 Minuten alt ist (bei jedem Klick des Benutzer wird das Datum aktualisiert) - gibt es auch dafür eine elegantere Methode?
PSS: Ich wollte bewusst auf die Nutzung der Datenbank verzichten, um nicht noch mehr Zugriffe heraufzubeschwören.
@session_save_path ("<MEINPFAD>");
@session_start ();
$ipaddr = $REMOTE_ADDR;
@session_register("ipaddr");
Mit einem einfach auslesen des Verzeichnisses weiss ich also, wieviel Benutzer sich gerade auf der Site befinden. Wie kann ich diese Dateien nun elegant auslesen, um sie in einer "wer ist online" Tabelle darzustellen?
Irgendwo musst du die Informationen zum Benutzer speichern. Z. B. in einer Textdatei, in welcher alle ID's und Namen der Besucher gespeichert sind.
PS: Ich würde dir vorschlagen das nicht mit der IP-Adresse zu machen. IP's sind nicht so eindeutig, wie es die IP-Logik vorschreibt. Ich würde einfach eine Tabelle erstellen, mit Namen und Kunden-ID: Kommt ein neuer Kunde hinzu bekommt er die ID (max(Kunden-ID) + 1). Dies ist wirklich der sicherste Weg.
PS: Um nicht zuviele "Leichen" zu haben, lösche ich die Session-Dateien einfach, wenn Ihr Erstelldatum länger als 20 Minuten alt ist (bei jedem Klick des Benutzer wird das Datum aktualisiert) - gibt es auch dafür eine elegantere Methode?
Ja, mit Datenbank:
SELECT * FROM WhoIsOnline WHERE LoginTime<SUBTIME( CURTIME(), INTERVAL 20 MINUTES).
Mit deiner "Datei-lösung", glaube ich nicht.
PSS: Ich wollte bewusst auf die Nutzung der Datenbank verzichten, um nicht noch mehr Zugriffe heraufzubeschwören.
??? - Verstehe die Argumentation nicht.
Hoffe das Hilft
---Philipp