Der zuvor textbasiert erstellte Counter soll grafisch dargestellt werden. Als eine zusätzliche Funktionalität gewinnt man die Möglichkeit, dass der Counter auch auf einer externen Seite eingebunden werden kann. Dies wird möglich, indem aus externen Webseiten Grafiken auf einem fremden Server referenziert werden können.
Für den Counter wird eine Rohvorlage mit einem beliebigen Grafikprogramm erstellt. In diese Rohvorlage wird später der Counter hinein eingebettet:
Zunächst macht das Skript dasselbe wie vorheriges textbasiertes Counterskript. Im Ausgabeteil gibt es jedoch den Counter nicht mehr einfach aus, sondern es sorgt dafür, dass die Rohvorlage eingelesen und der Counter an die entsprechende Stelle in dem Bild gesetzt wird.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php // —————– // Counterteil // —————– $counterfile = fopen ("stand.txt","r+"); flock ($counterfile,LOCK_EX); $canWrite = false; // Solange warten bis die Datei für das Schreiben freigegeben ist... while (!$canWrite) { $canWrite = flock($counterfile, LOCK_EX); } // Nun besitzt das Programm einen exklusiven Zugriff und es ist möglich den Counter auslesen und anschließen wieder in die Datei schreiben $counter = fgets ($counterfile); $counter = $counter + 1; fseek ($counterfile,0); fputs ($counterfile,$counter); fclose ($counterfile); // —————— // Ausgabeteil // —————— Header (“Content-type: image/png”); $im = ImageCreateFromPNG (“rohcounter.png”); // Öffnen der Rohdatei $white = ImageColorAllocate ($im, 255, 255, 255); // weißer Hintergrund $black = ImageColorAllocate ($im, 0, 0, 0); // schwarze Schrift // Die Datei arial.ttf mit der Schrift muss - falls nicht vorhanden - im Verzeichnis liegen ImageTTFText ($im, 12, 0, 60, 50, $black, “arial.ttf”, $counter); ImagePng ($im); // Als PNG ausgeben ImageDestroy ($im); // Resourcen freigeben ?> |
Das Ergebnis sieht nun wie folgt aus: