setcookie(name, value, expire, path, domain, secure)
Wszystkie parametry oprócz name są opcjonalne. W tym kursie omówię tylko parametry name, value oraz expire:
<?
$iloscWejsc++;
setcookie("iloscWejsc", $iloscWejsc);
?>
<HTML>
<BODY>
Odwiedzasz tą stronę już po raz
<?
echo($iloscWejsc);
?>
</BODY>
</HTML>
Ten skrypt będzie zliczał kolejne wejścia danego użytkownika na stronę. Ponieważ informacja jest przechowywana na komputerze użytkownika,
każdy odwiedzający stronę będzie miał oddzielny licznik. Bardzo ważne jest umieszczenie komendy setcookie przed tagiem <HTML>, ponieważ
cookies są wysyłane do przeglądarki użytkownika wraz z nagłówkiem strony. Po tagu <HTML> nagłówek jest już wysłany, więc jest za późno
na wysłanie cookie.
<?
setcookie("visited", "1", time()+3600*3);
/* wysyła cookie na komputer użytkownika */
?>
<HTML>
<BODY>
<?
if(file_exists("counter.n"))
{ /* sprawdza, czy plik istnieje */
$file=fopen("counter.n", "r"); /* otwiera plik */
flock($file, 1); /* blokuje plik */
$ile=fgets($file, 100); /* odczytuje wartość */
flock($file, 3); /* odblokowuje plik */
fclose($file); /* zamyka plik */
if($visited!="1") /* sprawdza, czy
użytkownik już odwiedzał stronę */
{
$ile++; /* zwiększa wartość
o 1 tylko po pierwszym wejściu */
}
}
else
{
$ile=1; /* jeśli plik nie istnieje, wyświetli się 1 */
}
$file=fopen("counter.n", "w"); /* otwiera plik do zapisu */
flock($file, 2); /* blokuje do zapisu */
fwrite($file, $ile); /* zapisuje wartość */
flock($file, 3); /* odblokowuje plik */
fclose($file); /* zamyka plik */
echo($ile); /* wyświetla wartość */
?>
</BODY>
</HTML>
Skrypt wysyła do użytkownika cookie. Następnie zwiększa licznik tylko jeżeli wartość cookie nie jest równa "1".
Funkcja time() użyta w 3 parametrze funkcji setcookie zwraca aktualny czas, liczony w sekundach od 1 stycznie 1970 roku.
<?
header("Content-type: image/gif");
$image=ImageCreateFromGif("obrazek.gif");
ImageGif($image);
?>
Użyta tutaj funkcja header służy do wysłania do przeglądarki pola nagłówka. W tym wypadku określa, że zostanie wysłany obrazek w formacie GIF.
W pliku nie powinny znajdować się żadne komendy HTMLa.
Kolejną funkcją związaną z obsługą obrazków jest ImageCreate(width, height) - tworzy ona obrazek o podanej szerokości i wysokości.
Do kopiowania fragmentów obrazków używa się funkcji magecopyresized(dst_im, src_im, dstX, dstY, srcX, srcY, dstW, dstH, srcW, srcH). Jej parametry
oznaczają:
<?
W skrypcie użyłem jeszcze dwóch nowych funkcji:
if(file_exists("c"))
{
$file=fopen("c", "r");
$ile=fgets($file, 1000);
$ile++;
fclose($file);
}
else
{
$ile=1;
}
/* usunąłem blokowanie plików i sprawdzanie
przeładowań, żeby uprościć kod */
$file=fopen("c", "w");
fwrite($file, $ile);
fclose($file);
header("Content-type: image/gif");
/* informuje przeglądarkę, że zostanie
wysłany obrazek w formacie GIF */
$image=ImageCreate(20*strlen($ile), 20);
/* tworzy pusty obrazek */
$cyfry=ImageCreateFromGif("cyfry.gif");
/* ładuje obrazek z cyframi */
for($i=0;$i
ImageCopyResized($image, $cyfry, 20*$i, 0,
20*substr($ile, $i, 1),
0, 20, 20, 20, 20); /* rysuje kolejne cyfry */
}
ImageGif($image); /* wysyła przygotowany obrazek */
?>
Skrypt najpierw zlicza odwiedziny tak jak liczniki tekstowe z poprzednich rozdziałów. Następnie tworzy obrazek, na którym będą rysowane kolejne
cyfry. Później ze zmiennej zawierającej ilość odwiedzin wycina poszczególne cyfry, i kopiuje do nowego obrazka odpowiednie fragmenty obrazka
cyfry.gif. Tak otrzymany obrazek wysyła do przeglądarki. Odwołanie do skryptu można wstawić na stronie komendą <IMG SRC=licznik.php3>.
http://ygreg.and.pl