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µ!