5








YGREG - Kurs PHP - Część 5






 














HOSTING
I


PHP
I


XML
I


CGI
I


HTML
I


FORUM
I


INNE
















Dodaj stronę do ulubionych









Chcesz wiedzieć, kiedy pojawia się coś nowego? Wpisz swój e-mail:








Hosting wirtualny
   Informacje
   Cennik
   Jazda próbna


PHP
   Kurs PHP
      Wprowadzenie
      Część 1
      Część 2
      Część 3
      Część 4
      Część 5
      Część 6
   Cookies
   Klasy w PHP
   Parametry   w adresie
   Wyrażenia   regularne
   Upload plików


Skrypty PHP
   Automat. FAQ
   Banner
   Forum
   Imperator Stats
   Komentarze
   Komentarze   (by JaX)
   Księga gości   (MySQL)
   Księga gości   (bez MySQL)
   Księga gości   (by Cezi)
   Księga gości   (by Occulkot)
   Licznik
   Logowanie
   News
   Profile
   Składak
   Sonda
   Sonda tak/nie
   Users Online
   Uploader


XML
   Kurs XML'a
      Wprowadzenie
      Pierwszy      dokument XML
      Sprawa      ogonkowa
      Przekształcenia
      Narzędzia
      Zasoby online


CGI
   Kurs Perla
      Wstęp
      Uruchomienie
      Składnia

   CGI_PL
      Warunki
      Formmail
      Formmail 2
      Formweb
      Tak/nie


HTML
   Podstawy
   Tagi
      Tekst
      Tabele
      Formularze
      Nagłowek
      Inne
   Kolory



Download
   Ygreg offline
   Narzędzia


Inne
   Download
   Błędy w stronach
   Apache i okienka
   Uprawnienia   w UNIX'ie
   Netscape 6
   Darmowe konta
   O mnie





























Katalog stron:

HTML,
Java i JavaScript,
Grafika i design,
ASP,
PHP,
CGI,
Narzędzia,
Pozostałe












Kurs PHP




Część 5


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ę.
Do zapisywania cookie na komputerze klienta służy funkcja setcookie:


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:

name - nazwa. Jeżeli jest jedynym parametrem, cookie o podanej nzwie zostanie usunięte z komputera użytkownika.
value - wartość która otrzyma cookie.
expire - data do której cookie będzie przechowywane na komputerze użytkownika, wyrażona w sekundach od 1 stycznia 1970 roku.

     Kiedy użytkownik z zapisanym cookie otworzy stronę zawiwerającą skrypt, zostanie utworzona zmienna o nazwie takiej jak podana w parametrze
name, zawierająca wartość cookie.
Przykład, tym razem zacytuję całą treść strony:


<?
$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.


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:


<?
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.


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:


<?
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ą:

dst_im - obrazek docelowy
src_im - obrazek źródłowy
dstX, dstY - współrzędne lewego górnego rogu obszarudo którego zostanie skopiowany obrazek. Punkt (0, 0) to lewy górny róg obrazka (oś pionowa
jest numerowana z góry do dołu).
dstW, dstH - szerokość i wysokość obszaru docelowego
srcX, srcY, srcW, srcH - tak samo jak dstX, dstY, dstW i dstH dla obszaru źródłowego.


Licznik graficzny

Dzięki tym funkcjom możliwe staje się stworzenie licznika graficznego. Poniższy fragment kodu wymaga pliku cyfry.gif



<?
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<strlen($ile);$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 */
?>



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>.















Sonda tylko w wersji online.


















16.09.2001
Artykuły "Cookies" i "Wyrażenia Regularne". Autor: Tomasz Szmigiel.


16.09.2001
Kolejna księga gości i skrypt do komentarzy.


29.08.2001
Wyszukiwarka do forum.


29.08.2001
Skrypty Komentarze i Sonda tak/nie.


29.08.2001
Skrypty Banner i Logowanie.


22.08.2001
Artykuł Parametry w adresie.

27.07.2001
Dizał XML, a w nim kurs XML'a autorstwa Pawła Stroińskiego.

21.07.2001
Skrypt FAQ.

19.07.2001
Serwery wirtualne50 MB, CGI, PHP już od 80 zł / rok.

19.07.2001
Wykupiłem domenę www.ygreg.com




























(C)opyright 1997-2001
by Grzegorz Plebański









Wyszukiwarka

Podobne podstrony:
06 2005 5 099
5?
BAZA PYTAŃ 319 pytan 5
Bear53901087 oeb qts r1
X660 Schematics Rev0 509
page50
Bear53901826 oeb p03 r1
25
T5 2
Pala85515839 oeb?5 r1

więcej podobnych podstron