HTTP Cookies
Czasem przydatna
jest możliwość zapisania jakiejś informacji na komputerze klienta. Do tego
właśnie stworzony został mechanizm Cookies - skrypt może zapisać na
komputerze użytkownika krótką informacje, a następnie po ponownym
odwiedzeniu strony pobrać ją. W ten sposób skrypt może zidentyfikować
użytkownika, który już wchodził na stronę. W tym rozdziale pokażę przykład
zastosowania cookie do stworzenia licznika odwiedzin zliczającego każdą
osobę tylko raz, niezależnie od tego, ile razy wyświetli
stronę.
Przykład, tym razem zacytuję całą treść strony:
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. Licznik tekstowy odporny na odświeżanie Teraz pokażę, jak zmodyfikować licznik z poprzedniego rozdziału, aby nie naliczał kolejnych wejść tego samego użytkownika:
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. Obrazki w formacie GIF PHP zawiera funkcje służące do obsługi obrazków w formacie GIF. Do załadowania obrazka używa się funkcji ImageCreateFromGif("nazwa.pliku.gif"). Aby zapisać obrazek należy użyć funkcji ImageGif(obrazek, "nazwa.pliku.gif"). Parametr określający nazwę pliku może zostać pominięty - wtedy zawartość pliku zostanie bezpośrednio wysłana do przeglądarki. Dzieki temu mozna utworzyc skrypt 'udający' obrazek:
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ą:
Licznik graficzny Dzięki tym funkcjom możliwe staje się stworzenie licznika graficznego. Poniższy fragment kodu wymaga pliku cyfry.gif
W skrypcie użyłem jeszcze dwóch nowych funkcji: strlen($napis) - zwraca długość napisu substr($napis, $poczatek, $n) - wycina $n znaków z napisu, zaczynając od pozycji $poczatek 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>. |