User Online Skript
Autor
Flitze
Klicks 26918
Keywords:
Besucherzähler, Besucher zählen, User zählen, gerade online, gerade aktiv
Klicks 26918
Rating für User Online Skript
6.7 von 10
Bewertungen20
Stand
26.02.2009
6.7 von 10
Bewertungen20
Keywords:
Besucherzähler, Besucher zählen, User zählen, gerade online, gerade aktiv
Breadcrumb:
Tipps » User Online Skript
Mit dem folgenden Skript kann man herausfinden, wie viele Benutzer sich gerade auf der Homepage befinden. Voraussetzung dazu ist eine MySQL-Datenbank.
Zuerst wird eine MySQL-Datenbanktabelle erstellt, die den Namen Online bekommt. Diese Tabelle hat folgende Eigenschaften:
Code:
Zum Erstellen kann der folgende Code verwendet werden:
PHP:
Das Feld IP speichert die IP eines Besucher und Datum speichert den genauen Aufrufszeitpunkt. Das IP-Feld ist genau 15 Zeichen lang, weil eine IP aus maximal 15 Zeichen besteht, 3 Punkten und 12 Ziffern (XXX.XXX.XXX.XXX).
Folgendes Skript muss nun auf jeder Seite aufgerufen werden
PHP:
Es wird vorausgesetzt, dass bereits eine Datenbankverbindung besteht!
Jeder Benutzer hat eine IP, gespeichert in $_SERVER['REMOTE_ADDR'].
Die Datenbank Online, die zuvor angelegt wurde, wird nach dieser IP dursucht. Wird die IP nicht gefunden, wird ein neuer Datensatz mit dieser IP und der aktuellen Uhrzeit (wichtig!) erstellt. Wird ein Datensatz gefunden, wird dieser mit der aktuellen Uhrzeit aktualisiert.
Man kann nicht 100% genau sagen, wie viele Besucher sich gerade jetzt auf der Homepage befinden, sondern muss ein bestimmtes Zeitinterval definieren.
Im letzten Schritt werden deshalb alle IPs gezählt, die in der Datenbank gespeichert sind und nicht älter als 2 Minuten sind. Die 2 Minuten sind von mir so festgelegt, daraus können auch 5 oder 10 Minuten gemacht werden. Alle IPs, die während dieser Zeit (den letzten 2 Minuten) eingetragen/aktualisiert wurden, werden dann als 'online' angesehen.
Damit die Datenbank nicht unnötig überfüllt wird, werden außerdem alle IPs, die älter als einen Tag sind, gelöscht.
In der Variable $anzahl steht nun die Zahl der Besucht, die gerade auf der Homepage sind.
Bewerten
Zuerst wird eine MySQL-Datenbanktabelle erstellt, die den Namen Online bekommt. Diese Tabelle hat folgende Eigenschaften:
Code:
Online +---------------+--------------+------+-----+---------+---------------+ | NAME | TYP | NULL | KEY | DEFAULT | Extras | +---------------+--------------+------+-----+---------+---------------+ | IP | VARCHAR(15) | X | | | | | Datum | DATETIME | X | | | | +---------------+--------------+------+-----+---------+---------------+
Zum Erstellen kann der folgende Code verwendet werden:
PHP:
<?php
$sql = 'CREATE TABLE `Online` ('
. ' `IP` VARCHAR(15) NULL, '
. ' `Datum` DATETIME NULL'
. ' )';
mysql_query($sql);
?>
Das Feld IP speichert die IP eines Besucher und Datum speichert den genauen Aufrufszeitpunkt. Das IP-Feld ist genau 15 Zeichen lang, weil eine IP aus maximal 15 Zeichen besteht, 3 Punkten und 12 Ziffern (XXX.XXX.XXX.XXX).
Folgendes Skript muss nun auf jeder Seite aufgerufen werden
PHP:
<?php
// Alte (mehr als 1 Tag) IPs in 'Online' löschen
// damit die Datenbank nicht überfüllt wird
$sql = "DELETE FROM
Online
WHERE
DATE_SUB(NOW(), INTERVAL 1 DAY) > Datum
";
mysql_query($sql);
// Überprüfe, ob die IP bereits gespeichert ist
$sql = "SELECT
IP
FROM
Online
Where
IP = '".$_SERVER['REMOTE_ADDR']."'";
$result = mysql_query($sql);
// Falls nicht, wird sie gespeichert
if (!mysql_num_rows($result)){
$sql = "INSERT INTO
Online
(IP,
Datum
)
VALUES ('".$_SERVER['REMOTE_ADDR']."',
NOW()
)
";
mysql_query($sql);
}
// Falls ja, wird ihr Datum aktualisiert
else {
$sql = "UPDATE
Online
SET
Datum = NOW()
WHERE
IP = '".$_SERVER['REMOTE_ADDR']."'
";
mysql_query($sql);
}
// Alle IPs, die nicht älter als 2 Minuten sind,
// werden gezählt
$sql = "SELECT
COUNT(*)
FROM
Online
WHERE
DATE_SUB(NOW(), INTERVAL 2 MINUTE) < Datum
";
$result = mysql_query($sql);
// $anzahl enthält nun alle User, die online sind
$anzahl = mysql_result($result, 0);
?>
Es wird vorausgesetzt, dass bereits eine Datenbankverbindung besteht!
Jeder Benutzer hat eine IP, gespeichert in $_SERVER['REMOTE_ADDR'].
Die Datenbank Online, die zuvor angelegt wurde, wird nach dieser IP dursucht. Wird die IP nicht gefunden, wird ein neuer Datensatz mit dieser IP und der aktuellen Uhrzeit (wichtig!) erstellt. Wird ein Datensatz gefunden, wird dieser mit der aktuellen Uhrzeit aktualisiert.
Man kann nicht 100% genau sagen, wie viele Besucher sich gerade jetzt auf der Homepage befinden, sondern muss ein bestimmtes Zeitinterval definieren.
Im letzten Schritt werden deshalb alle IPs gezählt, die in der Datenbank gespeichert sind und nicht älter als 2 Minuten sind. Die 2 Minuten sind von mir so festgelegt, daraus können auch 5 oder 10 Minuten gemacht werden. Alle IPs, die während dieser Zeit (den letzten 2 Minuten) eingetragen/aktualisiert wurden, werden dann als 'online' angesehen.
Damit die Datenbank nicht unnötig überfüllt wird, werden außerdem alle IPs, die älter als einen Tag sind, gelöscht.
In der Variable $anzahl steht nun die Zahl der Besucht, die gerade auf der Homepage sind.
Bewerten