Liczniki Odwiedzin

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.


liczniki znakowe

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!


liczniki graficzne

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


Stanis│aw Chlebicki
09 - 07 - 01