2009-02-20 3 views
5

Bei meiner Suche nach einer Möglichkeit, PHP dazu zu bringen, mir mitzuteilen, wie viele Menschen auf meiner Website "online" sind, habe ich herausgefunden, dass es Möglichkeiten gibt, Dies.Skript, um mir zu sagen, wer und wie viele Benutzer online sind

Ich habe mich entschieden, alles, was auf der Website passiert, zu protokollieren, auch wegen der Fehlerverwaltung, aber jetzt bin ich beim Schreiben meiner SQL-Abfrage fest.

Basicly habe ich eine Datenbank mit ‚IP‘, ‚Benutzer-ID‘ und ‚Datetime‘ und ich dachte, dass eine Abfrage wie dies würde den Trick:

SELECT distinct(IP), datetime 
FROM `bigBrother` 
WHERE datetime BETWEEN DATE_SUB(NOW(), INTERVAL 3 MINUTE) AND NOW() 

Das Problem ist, dass meine Website meist angesehen und von Studenten im Schulnetzwerk benutzt werden, und nun ... sie alle haben die gleiche IP.

Also die Frage ist, mache ich das richtig, und kann ich zwei verschiedene Zeilen aus meiner Datenbank auswählen, so dass ich die registrierten Benutzer (die eine 'userid' haben - andere BenutzerID = 0 haben)

Antwort

3

Verwenden Sie Cookies anstelle von IP-Adressen.

PHP macht es sehr einfach mit seinem Session-Mechanismus. Auf jedem tun Sie zuerst eine session_start() und dann verwenden Sie den Wert, der von session_id() zurückgegeben wird, als eine Identifizierung des Besuchers, den Sie in Ihre Datenbank setzen können.

+0

könnten Sie ein bisschen mehr erklären? – Jasper

2

Ich habe ein System für eine Schulseite erstellt, das nach dieser Funktion gefragt hat und hier ist, wie ich es gemacht habe.

Ich hatte eine Tabelle von Benutzern, in dieser Tabelle gibt es ein Feld namens „online_time“

Auf jeder Seite eine Funktion aufgerufen wurde, wenn der Benutzer, dass die „online_time“ aktualisiert protokolliert wurde auf die aktuelle Zeit von dieser Benutzer. (unixttime)

Dann hatte ich eine "Wer ist online" -Funktion, die auf die "online_time" schaute und alle Benutzer mit der Online-Zeit der letzten 5 Minuten angezeigt.

EDIT zum Kommentar:

Sie könnten die gleiche Funktion machen die Session-ID in einer anderen Tabelle speichern und die Zeit gerettet wurde. Die Sitzungs-ID ist für diesen Benutzer eindeutig, sodass Sie innerhalb der letzten 5 Minuten die Anzahl der Sitzungs-IDs abrufen können.

session_id() 
+0

Ich habe das auch schon, die Admins wollen auch wissen wie viele Leute online sind - also brauche ich auch die nicht eingeloggten Benutzer – Jasper

Verwandte Themen