Wie viele Besucher sind auf meiner Seite? Eine Lösung mit PHP.


‚Besucher online: xx‘
Das sieht man häufig auf Websites. Wer so einen Zähler auch auf seiner Seite einsetzen möchte, kann sich einerseits Lösungen bedienen, die z.B. auf MySQL Datenbanken aufsetzen. Andererseits geht es auch mit einem Codeschnipsel PHP:
Das kleine Script speichert Session-Cookies auf dem Webserver, der nach einer bestimmten Zeit wieder gelöscht wird.
Die Zeile
session_save_path(„/server/pfad/counter“);
muß nicht unbedingt sein. Wird der Pfad, auf dem die Session-Cookies gespeichert werden sollen, nicht definiert, speichert das Script z.B. auf Linux-Rechnern standardmäßig in /tmp. Hier muss man dann allerdings aufpassen, Session-Cookies nicht an mehreren Stellen einzusetzen, da sonst alle im gleichen Verzeichnis gespeichert werden und so das Ergebnis verfälscht wird.
Die nächste Zeile fügt eine neue Session hinzu, oder aktualisiert eine bestehende.
Die Funktion benutzerzaehlen() zählt dann die gespeicherten Session-Cookies innerhalb des Ordners und gibt diese an den Browser aus.
Der User sieht also die Zahl der aktuell gespeicherten Session-Cookies.
Standardmäßig bleiben Sessions 1440 Sekunden gespeichert, also genau 24 Minuten. in der Datei php.ini Ihres Webservers können Sie diesen Wert ändern. Geht das nicht, oder wollen Sie den Wert beibehalten, müssen Sie veraltete Sessions manuell herausfiltern. Ersetzen Sie dafür die Zeile
count++;
durch diese
if(time()- fileatime(session_save_path() . ‚/‘ . $file) < (5 * 60)) { $count++; }
Der Wert (5 * 60) bestimmt in Minuten wie lange ein Besucher nach dem Aufruf der entspechenden Seite als aktiv gilt, hier also 5 Minuten gleich 300 Sekunden.
Wenn Sie das Script auf einer Webseite einbauen, vergessen Sie nicht, Ihr die Endung .php zu geben, damit das Script beim Aufruf auch entsprechend ausgeführt wird.
Hier nun das vollständige Script:
<?php
session_save_path(„/server/pfad/countuser“);
session_start();
function benutzerzaehlen(){
if ( $directory_handle = opendir( session_save_path() ) ) {
$count = 0;
while ( false !== ( $file = readdir( $directory_handle ) ) ) {
if($file != ‚.‘ && $file != ‚..‘){
$count++;
}
}
closedir($directory_handle);
return $count;
} else { return false; }
}
echo ‚Anzahl User online: ‚ . benutzerzaehlen() . ‚<br>‘;
?>