Erste Schritte in PHP, Teil 3 Einfache PHP-Skript-Programme erstellen

Autor / Redakteur: Christian Rentrop / Stephan Augsten

PHP ist durchaus eine vollwertige Programmiersprache, auch wenn sie für die Verwendung auf Webservern optimiert wurde. Einfache Skript-Programme stellen aber überhaupt kein Problem dar, wir zeigen ein paar Beispiele.

Anbieter zum Thema

Ein einfacher Besucherzähler ist in PHP schnell geschrieben.
Ein einfacher Besucherzähler ist in PHP schnell geschrieben.
(Bild: Rentrop / Tincta)

PHP ist natürlich auch für das klassische Programmieren geeignet. So können mit einfachen Mitteln Besucherzähler, Ticket- und Produktzähler oder andere Dinge realisiert werden. Die Werte können bei Bedarf in eine Datenbank geschrieben werden. Die einfachste Form der Datenbank ist dabei eine Textdatei, die wir im Folgenden verwenden möchten.

Mithilfe der rudimentären Datenbank erstellen wir zunächst einen einfachen Besucherzähler. Die Vorgehensweise dafür liegt auf der Hand: Wir möchten einen Wert erheben, in der „Datenbank“ zwischenspeichern und anschließend auslesen und den neuen Wert setzen. Dafür sind die Datei-Befehle „fopen“, „fread“, „fwrite“ und „fclose“ im PHP-Skript aufzurufen.

Skript: Ein einfacher Besucherzähler

<?php   // Erstellen und Auslesen der Textdatei
   $datenbank = "besucher.txt";
   $wert = fopen ($datenbank, "r");
   $inhalt = fread ($wert, filesize ($datenbank));
   fclose ($wert);
   // Hochzählen
   $inhalt = $inhalt + 1;
   echo "<p>Es waren bisher <b>$inhalt</b> Besucher auf dieser Website.</p>";
   // Schreiben des neuen Werts in die "Datenbank"
   $wert = fopen ("besucher.txt", "w");
   fwrite ($wert, $inhalt);
   fclose ($wert);
?>

Der Besucherzähler erklärt

Was genau ist hier passiert? Zunächst öffnet das Skript die Variable $datenbank in Form der Textdatei „besucher.txt“ im Stammverzeichnis des Skripts. Hier können natürlich auch relative oder absolute Pfadangaben eingesetzt werden. Ist die Datei nicht vorhanden, wird sie automatisch erstellt. Im Umkehrschluss heißt das: Um den Besucherzähler zurückzusetzen, müssen Sie nur „besucher.txt“ löschen.

Anschließend schreibt das Skript den aktuellen Wert in die „Datenbank“ und schließt diese. Nun wird bei jedem Reload der Wert aktualisiert: Die Variable $inhalt wird um 1 hochgezählt und der aktuelle Wert wird im Browser ausgegeben. Anschließend überschreibt das Skript den Wert in der Textdatei mit dem neuen Wert. Bei jedem Reload wird also um 1 hochgezählt.

IF-Abfragen einsetzen

Nun kann man diesen Zähler natürlich noch ein wenig erweitern. Etwa mit einer IF-Abfrage: Solange ein bestimmter Wert noch nicht erreicht ist, soll die Website etwas anderes ausgeben, als wenn der Wert erreicht ist. Sprich: Wir definieren eine neue Variable $erreicht, die in Relation zu unserem vorhandenen Wert in der „Datenbank“ steht, nämlich der Variablen „$inhalt“.

Eine solche Funktion kann zum Beispiel genutzt werden, um einem Benutzer Feedback über seine Eingaben zu geben. Der Klassiker wäre der „Tausendste Besucher“ einer Website, gekoppelt an einen Gewinn. In der einfachsten Form sähe das im Rahmen des Besucherzählers innerhalb des vorherigen Skripts so aus:

$erreicht = 100;
if ($erreicht > $inhalt )
   {
      echo „Um $erreicht zu erreichen, musst Du weiter klicken“;
   }
else
   {
      echo "Du hast gewonnen!“;
   }

Dadurch wird eine Variable mit festem Wert definiert, in diesem Fall „100“. Die IF-Anweisung besagt jetzt folgendes: Solange der Zähler $inhalt noch nicht 100 beträgt, gibt das Skript die Anweisung aus, weiter zu klicken. Sobald der Wert 100 erreicht ist, erscheint die Meldung, dass genug geklickt wurde.

IF-Abfrage weiter definieren

Um einen Gewinn zu verlosen, macht das natürlich nicht wirklich Sinn: Jeder Besucher nach dem 100. Besucher wird ebenfalls die Meldung „Du hast gewonnen“ ausgegeben. Ziel muss es jedoch sein, dass NUR der 100. Besucher die Gewinnmeldung erhält, alle anderen davor und danach erhalten sie hingegen nicht. Dafür muss die IF-Abfrage weiter ein wenig erweitert werden, und zwar mit einem ELSEIF.

Konkret besagt das Skript nun folgendes: Solange der Wert $erreicht nicht erreicht ist, gibt das Skript auf der Website einen bestimmten Satz aus. Sobald der genaue Wert von $erreicht durch Klicks erzielt wurde, kommt die Gewinnbenachrichtung. Und alle weiteren Klicks nach Überschreiten der Variablen benachrichtigen den User, dass er zu spät gekommen ist. In PHP lässt sich das einfach realisieren:

$erreicht = 100;
if ($erreicht > $inhalt)
   {
      echo "Um $erreicht zu erreichen, musst Du weiter klicken";
   }
elseif ($erreicht < $inhalt)
   {
      echo "Schade, Du bist zu spät";
   }
   else
   {
      echo "Herzlichen Glückwunsch";
   }

Die Logik dahinter ist simpel: IF definiert, dass solange der Schwellenwert $erreicht = 100 nicht erreicht ist, die Meldung „Um (Schwellenwert) zu erreichen, musst Du weiter klicken“ ausgegeben wird. Sobald der Schwellenwert 100 überschritten wird, soll zudem die Meldung „Schade, Du bist zu spät“ ausgegeben werden. Das erfolgt über die ELSEIF-Bedingung. Damit sind sämtliche Werte oberhalb und unterhalb des Schwellenwerts abgedeckt.

Jetzt kommt das ELSE ins Spiel: In allen anderen Fällen soll „Herzlichen Glückwunsch“ ausgegeben werden. Da wir mit IF alle Werte unterhalb von 100 und mit ELSEIF alle Werte oberhalb von 100 ausgeklammert haben, bleibt als ELSE nur noch der eine Zielwert übrig, bei dem die passende Meldung erfolgt. Das gesamte Besucherzähler-Skript mit Gewinnoption sieht dementsprechend so aus:

<?php
   // Auslesen der Textdatei
   $datenbank = "besucher.txt";
   $wert = fopen ($datenbank, "r");
   $inhalt = fread ($wert, filesize ($datenbank));
   fclose ($wert);
   // Hochzählen
   $inhalt = $inhalt + 1;
   echo "<p>Es waren bisher <b>$inhalt</b> Besucher auf dieser Website.</p>";
   // Schreiben des neuen Werts in die "Datenbank"
   $wert = fopen ("besucher.txt", "w");
   fwrite ($wert, $inhalt);
   fclose ($wert);
   // Zielwert definieren
   $erreicht = 100;
   if ($erreicht > $inhalt)    //solange Zielwert zu klein
   {
      echo "Um $erreicht zu erreichen, musst Du weiter klicken“
   }
   elseif ($erreicht < $inhalt) // sobald Zielwert zu gross
   {
      echo "Schade, Du bist zu spät“;
   }
   else
   {
      echo "Herzlichen Glückwunsch"; // Ausgabe nur bei Erreichen des Zielwerts
   }
?>

Vereinfachte Version

Es geht natürlich auch noch einfacher. Etwa dann, wenn es nur darum geht, bei einem bestimmten Zielwert etwas auszulösen:

$erreicht = 100;
if ($erreicht != $inhalt) // solange Zielwert nicht gegeben
   {
      echo "Sorry";
   }
elseif ($erreicht = $inhalt) // beim Zielwert
   {
      echo "Glückwunsch";
   }

In diesem Fall wird immer „Sorry“ ausgegeben, solange nicht genau 100 Besucher auf der Seite waren.

Beliebig erweiterbar

Natürlich ist das ein wenig „von hinten durch die Brust ins Auge“, dient aber vor allem der Veranschaulichung. Auf Basis dieses Skripts können Sie aber Ihren einfachen Besucherzähler bereits einsetzen und danach beliebig erweitern.

Dankbar wäre zum Beispiel, bei Erreichen des Zielwerts eine Schaltfläche einsetzen, die es dem „Gewinner“ erlaubt, seine Mail-Adresse einzugeben. Sie können auch dafür sorgen, dass sich eine bestimmte Website öffnet oder verschiedene andere Aktionen ausgeführt werden. Was genau passiert, bestimmen Sie ganz einfach per PHP-Befehl – und können so nach und nach eine Webanwendung programmieren.

(ID:45090330)