Beiträge

[PHP] Einfacher Datei-Counter

Hallo zusammen,

heute bauen wir uns einen einfachen Counter der seine Daten in einer Datei speichert. Das Prinzip ist einfach. Das Script wird beim Aufruf der Seite gestartet, öffnet eine Datei und holt den aktuellen Zählerstand, erhöht ihn um 1, gibt diesen aus und speichert den neuen (alten Stand + 1) wieder zurück in die Datei.

Und so wird es gemacht.

Als erstes der PHP-Tag, ohne den Bekanntlich nichts geht.
<?php
Dann wird der Dateiname an eine Variable übergeben (man könnte es auch direkt an den Befehl übergeben, aber so finde ich es dynamischer).
$dateiname = “counter.txt”;
Dann wird mit dem “fopen”-Befehl die Datei geöffnet. Der Parameter “r+” bedeutet hierbei das die Datei zum Lesen (read) geöffnet werden soll… das “+” heißt, wenn die Datei nicht vorhanden ist soll versucht werden sie anzulegen (Schreibrechte vorausgesetzt). Das Handle wird der Variable “$datei” übergeben.
$datei = fopen($dateiname,”r+”);
Der Dateiinhalt wird ausgelesen und an die Variable “$zaehler” übergeben, beschränkt auf 10 Zeichen. Das sollte für einen Zähler wohl reichen, wenn nicht einfach erhöhen.
$zaehler = fgets($datei, 10);
Nun wird geprüft ob überhaupt schon etwas in der Datei steht oder ob sie evtl. neu angelegt wurde. Wenn der String leer ist, dann muss er mit “0” gefüllt werden da andernfalls der nachfolgende Befehl fehlschlägt und einen Fehler verursacht.
if($zaehler == “”) {
$zaehler = 0;
}

Nun müssen wir den Counter um 1 erhöhen… sonst wäre es ja kein Counter. :) PHP macht und das zählen einfach… einfach “++” an eine Variable (mit Zahl im Inhalt) anhängen und schon wird die Zahl in der Variable um 1 erhöht. Funktioniert auch andersrum mit “–” = Zahl minus 1.
$zaehler++;
Der beste Counter nützt nix wenn er nicht auch ausgegeben wird ;) Daher hier eine die Ausgabe, kurz und schmerzlos:

echo “Du bist der “.$zaehler.” Besucher.”;
Nun müssen wir den neuen Wert natürlich auch wieder in die Datei schreiben. Vorher müssen wir den alten Wert aber löschen und den Dateizeiger auf den Anfang der Datei setzen. Das geschieht mit “rewind”:
rewind($datei);
Dann den neuen Wert mit “fwrite” in die Datei schreiben:
fwrite($datei, $zaehler);
Und natürlich Datei schließen nicht vergessen.

fclose($datei);
Zum Abschluss unseres kleinen Scriptes den PHP-Tag wieder schließen…
?>
… und fertig sind wir schon. Einfach und wirkungsvoll. Für größere Projekte zwar nicht sinnvoll… aber für den Privatgebrauch sicher zumindest ein Anfang

Gruß
Gordon


Hinweis: Die Verwendung meiner Codeschnipsel erfolgt auf eigene Gefahr! Ich übernehme auch keine Garantie auf Funktionstüchtigkeit (jeder Server ist anders konfiguriert. Bei Problemen können Sie hier aber gern einen Kommentar schreiben und wir suchen eine Lösung. ;)