Stanisław Chlebicki
Zapewne wszyscy wiedzą czym jest licznik odwiedzin. Jest wiele serwisów które udostępniają liczydła na strony bez koniecznej znajomości języka PHP. Okazuje się, że zrobienie własnego nie jest takie trudne. Problem jest inny, nie każdy serwer darmowych kont WWW obsługuje PHP. Serwer HOGA.PL dał możliwość obcowania z językiem PHP i CGI dodając do swoich usług możliwość założenia konta które obsługuje te skrypty, wszystko (jak założyć i jak korzystać) znajdziecie na stronie http://www.phg.pl/. Kurs złożony jest z dwóch części - jak zrobić licznik znakowy, oraz jak zrobić licznik graficzny.
Aby zrobić licznik, potrzebne będą dwa pliki - wartosc.txt (tu będzie wartość liczbowa licznika, zmieniająca się po każdym odświeżeniu strony, najlepiej zacząć wpisując tam 0) oraz plik strony wyświetlającej licznik (musi być w formacie php3, np. robaki.php3). Pliki w formacie php3 piszemy podobnie jak w HTMLu, wszystkie tagi - <html>, <body> - dodając jeszcze:
<?PHP //skrypt ?>
...więc strona z licznikiem będzie wyglądać tak:
<html> <body> <?PHP $wartosc = "wartosc.txt"; $fp = fopen($wartosc, "r+"); $count = fgets($fp, 10); $count += 1; fseek($fp, 0); fwrite($fp, $count, 10); fclose($fp); echo "Stronę oglądano $count razy!"; ?> </body> </html>
Taki kod wklejamy do np. Notepada i zapisujemy w formacie php3. Licznik zadziała dopiero wtedy gdy umieścisz dwa stworzone pliki na koncie które może obsłużyć PHP!
Zrobienie takiego licznika jest nieco trudniejsze... tym razem licznik będzie wyświetlany na dokumencie html, a nie jak ostatnio php3. Strona wyświetlająca licznik powinna wyglądać tak:
<html> <body> <img src="licznik.php3"> </body> </html>
...zapisz ten kod w formacie html! A teraz, jak wskazuje URL, trzeba zrobić plik "licznik.php3". Najlpepiej napisz go w Notepadzie i zapisz w formacie php3.
<? $plik=fopen("licznik.txt","r+"); flock($plik,2); $linia=fgets($plik, 7); $liczba=$linia + 1; fseek($plik, 0); fwrite($plik,$liczba); fseek($plik, 0); $licz=array(); $znak=""; $i=0; $juz=0; define("zw","25"); /* ustalamy wielkość obrazków */ do { $znak=fgetc($plik); $licz[$i]=$znak; ++$i; } while(!feof($plik)); $il=$i; Header("Content-type: image/png"); $licznik=ImageCreate(7*zw,zw); $obrazek=array(); for($j=0;$j<=9;$j++) { $obrazek[$j]=ImageCreateFromPNG("img/".$j.".png"); /* ustalamy gdzie są rysunki */ } $i=0; for($i=0;$i<=7-$il;$i++) { ImageCopyResized($licznik, $obrazek[0], $juz, 0, 0, 0, zw, zw, zw, zw); $juz+=zw; } $i=0; for($i=0;$i<=$il-1;$i++) { ImageCopyResized($licznik, $obrazek[$licz[$i]], $juz, 0, 0, 0, zw, zw, zw, zw); $juz+=zw; } ImagePNG($licznik); ImageDestroy($licznik); flock($plik,3); fclose($plik); ?>
Wszystkie obrazki zapisujemy w formacie png. W tym przypadku mają sie nazywać: 1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png i 0.png oraz muszą znajdować się w katalogu "img" (dla pliku licznik.php3 w ścieżce /img/numer.png). Na koniec tworzymy plik wartości licznika (podobnie jak w liczniku znakowym, wartość wpisujemy do pliku txt), który nazywamy w tym przypadku "licznik.txt". Wszystkie pliki (rysunki png, licznik.php3 oraz strona html z licznikiem) wysyłamy na serwer obsługujący PHP, dopiero wtedy licznik ma prawo zadziałać!