Text- und graphischer Counter mit PHP
Textcounter
%Überschrift des Abschnitts eingeben
Ziel ist es die Anzahl der Besucher der Webstartseite zu addieren und den Wert auf der Homepage auszugeben – vorerst als Text, im zweiten Teil als Grafik mit eigenen “Zahlengrafiken”.

Hierfür wird eine Datei am Server benötigt, in die der aktuelle Besucherstand gespeichert wird (sozusagen das Gedächtnis). Weiters wird ein Skript benötigt, das zum Wert der in der Datei gespeichert ist (also die derzeitige Besucherzahl) bei jedem Besuch 1 addiert.
Dazu schreiben wir ein kleines php-Skript, das dies bewerkstelligt – das Skript kann einfach in die index.html Datei einer Startseite kopiert werden.
Zuerst erzeugen wir aber die Datei count.txt per Hand - zB mit Notepad und schreiben den numerischen Ausgangswert 0 händisch in die Datei; zu diesem Wert wird später automatisch per php hinzuaddiert.

%eventuell Bildlegende zum Screenshot
Wir speicher die Datei vorerst auf der Festplatte um sie nacher auf den Webserver hochladen zu können.
Nun benötigen wir noch das Skript, das bei jedem Besucher 1 addiert und das Ergebnis auf der Webseite ausgibt.

Wie speichern folgendes Skript unter dem Dateinamen: count.php ab:

%eventuell Bildlegende zum Screenshot
Was macht dieses Skript?

$fp=fopen("count.txt", "r+");

Zuerst öffnet es die Datei count.txt mit dem Befehlt fopen. Wir verwednen die Funktion fopen mit 2 Argumenten/Parameter:
Das erste Argument gibt den Namen der Datei an, die geöffnet werden soll (also "count.txt"). Das zweite Argument, das durch einen Beistrich getrennt ist gibt den Modus an, in dem wir die Datei öffnen.

Dabei bedeutet “r+“, dass die Datei zum Lesen (der Besucherzahl) und zum Schreiben geöffnet wird.
Zurückgeliefert wird ein Verweis auf die Datei am Server: $fp (die Variable wurde hier $fp für File-Pointer genannt, sozusagen ein “Fingerzeig” auf die physische Datei count.txt am Server. Über $fp können dann weitere Dateibearbeitungen erfolgen).

Um eben mit Dateien überhaupt zu arbeiten, muß man sie “wie eine Konserverbüchse öffnen” und kann dann erst Operationen mit ihrem Inhalt durchführen (lesen aus Datei/schreiben in Datei/...). Der Filepointer gibt weiters darüber Auskunft ob man sich zB am Ende der Datei befindet oder am Anfang - das ist wichtig, falls man zB in einer Datei am Ende etwas hinzufügen will;

Da wir den Parameter “r+” gewählt haben, befinden wir uns am Anfang der Datei; für weitere Parameter siehe:
http://www.php.net/fopen
'r+' Open for reading and writing; place the file pointer at the beginning of the file.

Im nächsten Befehl fgets($fp, 1024); lesen wir von der Datei über unseren File-Pointer $fp, der ja auf die Datei “count.txt” zeigt maximal 1024 Zeichen (dies sollte doch eigentlich für jede Homepage reichen - sprich eine Zahl mit 1024 Stellen wäre möglich). Würde dort 1, 2 oder 3 stehen ginge der Counter nur bis 9 oder 99 etc. da nur “soundsoviele” Zeichen vom Beginn der Datei eingelesen würden – dieser Wert ist eben das 2te Argument.
fgets liefert als Rückgabewert einen String, der durch die Zuweisung: $count = fgets($fp, 1024); an die Variable $count übergeben wird.

Der Rest ist nicht mehr schwer, wir addieren die Zahl 1 zu unserm eingelesnen Wert $count mit:
$count = $count+1;

gehen dann mit fseek($fp,0); wieder an den Anfang der Datei. Mit fseek läßt sich also der Filepointer an die Anfangsposition (0) der Datei setzen.
Nun schreiben wir mit fputs den Wert wieder in die Datei zurück.
Da alle Operationen mit der Datei durchgeführt sind, können wir sie wieder mit close schließen.
Der Rest ist wie gehabt html-code und das echo-Statement, das den erhöhten $count Wert ausgibt.

Beim hochladen der Dateien (count.txt und count.php) auf den Server ist zu beachten, dass in die Datei count.txt beschrieben werden können muß, d.h. nach dem upload müssen wir die Dateirechte der Datei count.txt auf Schreiberlaubnis setzen. Würden wir dies nicht machen, könnte das php Skript die Datei nicht im Schreibmodus “r+” öffnen, und es würde z.B. folgender Fehler als erstes auftreten:

Warning: fopen("/home/intern/public_html/webcounter/count.txt","r+") - Permission denied in /home/intern/public_html/webcounter/count.php on line 2


%eventuell Bildlegende zum Screenshot