SELFPHP

SELFPHP-Druckversion
Original Adresse dieser Seite:
http://www.selfphp.de/praxisbuch/praxisbuchseite.php?site=228&group=39
© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.de
© 2005-2017 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de


Grafikcounter


Nachdem Sie nun den Textcounter kennengelernt haben, wäre es sicher interessant, eine grafikbasierte Lösung zu erstellen. Das vorhandene Skript des Textcounters muss dafür lediglich um einige Codezeilen ergänzt werden.

Das erforderliche Skript zur Umsetzung des Counters stellt sich wie folgt dar:

<?php

// Grafik Counter v1.0
// Für die korrekte Funktionsweise des Counters ist darauf zu
// achten, dass die entsprechenden Schreibrechte auf dem
// Webserver gesetzt sind.

// Counterdateiname
$datei="counter.txt";

// Anzahl der führenden Nullen
$stellen = 5;

// Festlegen der Bild-Dimensionen
$breite="15";
$hoehe="19";

if(file_exists($datei)){
  // Falls die Datei existiert, wird sie ausgelesen und
  // der dort enthaltene Wert um eins erhöht.
  $fp=fopen($datei,"r+");
  $zahl=fgets($fp,$stellen);
  $zahl++;
  rewind($fp);
  flock($fp,2);
  fputs($fp,$zahl,$stellen);
  flock($fp,3);
  fclose($fp);
}else{
  // Die Datei counter.txt existiert nicht, sie wird
  // neu angelegt und mit dem Wert 1 gefüllt.
  $fp=fopen($datei,"w");
  $zahl="1";
  fputs($fp,$zahl,$stellen);
  fclose($fp);
}

// Diese Funktion sorgt für die Formatierung
// in diesem Fall für die führenden Nullen
$zahl=sprintf("%0".$stellen."d",$zahl);

// Hier wird der Zähler aus Bildern zusammengesetzt
for($i=0;$i<$stellen;$i++){
  $bild_counter=$bild_counter . "<img src=bilder/" . substr($zahl,$i,1) . ".gif align=absmiddle width=$breite height=$hoehe>";
}

?>

Für die grafische Lösung wurden lediglich die beiden Variablen $breite und $hoehe hinzugefügt, welche die Bilddimensionen festlegen. Die einzelnen Bilder, aus denen sich der Counter zusammensetzt, werden mithilfe der for-Schleife festgelegt. Dabei ist darauf zu achten, dass die einzelnen Grafiken von 0.gif bis 9.gif im angegebenen Verzeichnis bilder vorliegen müssen.

Nun betrachten Sie die Codezeile innerhalb der for-Schleife etwas genauer. Die Variable $bild_counter, welche immer an sich selbst angehängt wird, erzeugt mithilfe der for-Schleife die benötigten <img>-Tags, die auf die entsprechenden Stellen der Zahl verweisen. Ist die erste Stelle beispielsweise eine Zwei, dann lautet der korrekte Hyperlink:

<img src=bilder/2.gif align=absmiddle width=15 height=19>

Um den Wert der Stelle und damit des Namens der Bilddatei zu ermitteln, die die entsprechende Ziffer enthält, wird die Funktion substr() verwendet. Diese sucht aus einer Zeichenkette ein oder mehrere Zeichen heraus, je nachdem, welche Parameter an die Funktion übergeben wurden. Der erste Parameter enthält die zu untersuchende Zeichenkette ($zahl). Der zweite Parameter gibt die Position innerhalb der Zeichenkette an, an der die Funktion ansetzen soll ($i), und legt damit auch den Startwert fest. Der dritte Parameter legt fest, wie viele Zeichen ab dem Startwert zurückgegeben werden sollen (1). Der Startwert muss nacheinander die Werte 0 bis $stellen durchlaufen, um sämtliche Stellen von $zahl zu untersuchen.

Natürlich können Sie auch JPEG-Bilder verwenden, hierzu müssen Sie lediglich die Codezeile innerhalb der for-Schleife wie folgt anpassen:

$bild_counter=$bild_counter . "<img src=bilder/" . substr($zahl,$i,1) . ".jpg align=absmiddle width=$breite height=$hoehe>";

Auch in diesem Fall empfehle ich Ihnen, das Skript in eine separate Datei abzuspeichern, wie z. B. grafikcounter.php. Der Aufruf des Counters kann anschließend aus jedem beliebigen PHP-Skript Ihrer Website erfolgen, und zwar wie folgt:{PSP}
<?php

include("grafikcounter.php");
echo $bild_counter;

?>




Bild 5.3: Der formatierte Besucherzähler (Grafikversion) im Einsatz