PHP – Ciasteczka

Ciasteczka są plikami tekstowymi przechowywanymi na komputerze klienta i służą do śledzenia jego aktywności. PHP wspiera ciasteczka HTTP w bardzo przejrzysty sposób.  
  1. Identyfikacja powracających użytkowników odbywa się w trzech etapach
  2. Skrypt serwera wysyła zestaw ciasteczek do przeglądarki. Na przykład imię, wiek, numer identyfikacyjny itp.
  3. Przeglądarka przechowuje te dane na komputerze lokalnym na potrzeby przyszłego wykorzystania.
  4. Kiedy następnym razem przeglądarka wyśle jakiekolwiek żądanie do serwera WWW, przesyła informacje o ciasteczkach do serwera, a serwer używa tych informacji do identyfikacji użytkownika.
  W tym wpisie dowiesz się jak ustawić ciasteczka, jak uzyskać do nich dostęp i jak je usunąć.

Anatomia plików cookie

Ciasteczka są zazwyczaj ustawiane w nagłówku HTTP (chociaż JavaScript może również ustawić ciasteczko bezpośrednio w przeglądarce). Skrypt PHP, który ustawia ciasteczko, może wysyłać nagłówki wyglądające mniej więcej tak –
HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT; 
                 path=/; domain=skiprzeworsk.pl
Connection: close
Content-Type: text/html
Jak widać, nagłówek Set-Cookie zawiera parę nazwa-wartość, datę GMT, ścieżkę i domenę. Nazwa i wartość będą zakodowane w adresie URL. Pole expires jest instrukcją dla przeglądarki, aby „zapomniała” o ciasteczku po określonym czasie i dacie.   Jeśli przeglądarka jest skonfigurowana do przechowywania plików cookie, będzie przechowywać te informacje aż do daty wygaśnięcia. Jeśli użytkownik wejdzie na stronę, która odpowiada ścieżce i domenie cookie, przeglądarka wyśle ponownie ciasteczko do serwera.Nagłówki przeglądarki mogą wyglądać mniej więcej tak –
GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz
Skrypt PHP ma wtedy dostęp do pliku cookie w zmiennych środowiskowych $_COOKIE lub $HTTP_COOKIE_VARS[], które przechowują wszystkie nazwy i wartości plików cookie. Powyższe ciasteczko może być odczytane przy użyciu $HTTP_COOKIE_VARS[„name”].  

Ustawianie ciasteczek za pomocą PHP

PHP udostępnia funkcję setcookie() służącą do ustawiania ciasteczek. Funkcja ta wymaga do sześciu argumentów i powinna być wywołana przed znacznikiem <html>. Dla każdego ciasteczka funkcja ta musi być wywołana osobno.
setcookie(Nazwa, Wartość, Wygaśnięcie, Ścieżka, Domena, Bezpieczeństwo);

Poniżej znajduje się szczegółowy opis wszystkich argumentów

 
  • Nazwa – Ustawia nazwę ciasteczka i jest przechowywana w zmiennej środowiskowej o nazwie HTTP_COOKIE_VARS. Zmienna ta jest używana podczas dostępu do ciasteczek.
  • Wartość – Ustawia wartość zmiennej o podanej nazwie czyli informację jaką chcemy przechowywać.
  • Wygaśnięcie – Określa przyszły czas w sekundach od 00:00:00 GMT 1 stycznia 1970 roku. Po tym czasie cookie stanie się niedostępne. Jeżeli ten parametr nie jest ustawiony to cookie wygaśnie automatycznie po zamknięciu przeglądarki.
  • Ścieżka – Określa katalogi, dla których cookie jest ważny. Pojedynczy znak ” ukośnika skierowanego w przód” oznacza, że plik cookie będzie ważny dla wszystkich katalogów.
  • Domena – pole to może być użyte do określenia nazwy domeny w bardzo dużych domenach. Aby było ważne, musi zawierać co najmniej dwie kropki. Wszystkie ciasteczka są ważne tylko dla hosta i domeny, która je utworzyła.
  • Bezpieczeństwo – Może być ustawione na 1, aby określić, że ciasteczko powinno być wysyłane tylko przez bezpieczną transmisję HTTPS, w przeciwnym razie ustawiamy na 0, co oznacza, że ciasteczko może być wysyłane przez zwykły HTTP.
 

Poniższy przykład utworzy dwa ciasteczka nazwa i wiek, które wygasną po godzinie.

 
<?php setcookie("nazwa", "Jan Tomaszewski", time()+3600, "/","", 0);
   setcookie("wiek", "83", time()+3600, "/", "",  0);
?>
<html>
  <head>
    <title>Zaczynamy z ciasteczkami w PHP</title>
  </head>
  <body>
    <?php echo "Ustaw ciasteczko"?>
  </body>
</html>

Dostęp do ciasteczek za pomocą PHP

PHP oferuje wiele sposobów na dostęp do plików cookie. Najprostszym sposobem jest użycie zmiennych $_COOKIE lub $HTTP_COOKIE_VARS. Poniższy przykład umożliwi dostęp do wszystkich ciasteczek ustawionych w powyższym przykładzie.
<html>
   
   <head>
      <title>Dostęp do ciasteczek za pomocą PHP</title>
   </head>
   
   <body>
      
      <?php
         echo $_COOKIE["nazwa"]. "<br />";
         
         /* to to samo co */
         echo $HTTP_COOKIE_VARS["nazwa"]. "<br />";
         
         echo $_COOKIE["wiek"] . "<br />";
         
         /* to to samo co */
         echo $HTTP_COOKIE_VARS["wiek"] . "<br />";
      ?>
      
   </body>
</html>
Aby sprawdzić, czy ciasteczko jest ustawione, czy nie, możesz użyć funkcji isset().
<html>
   
   <head>
      <title>Dostęp do ciasteczek za pomocą PHP</title>
   </head>
   
   <body>
      
      <?php
         if( isset($_COOKIE["nazwa"]))
            echo "Witaj " . $_COOKIE["nazwa"] . "<br />";
         
         else
            echo "Hmm... Nie znam cię" . "<br />";
      ?>
      
   </body>
</html>
   

Usuwanie ciasteczek za pomocą PHP

Oficjalnie, aby usunąć ciasteczko powinieneś wywołać setcookie() tylko z argumentem name, jednak nie zawsze działa to dobrze i nie należy na tym polegać.   Najbezpieczniej jest ustawić ciasteczko z datą, która już wygasła.
<?php
   setcookie( "nazwa", "", time()- 60, "/","", 0);
   setcookie( "wiek", "", time()- 60, "/","", 0);
?>
<html>
   
   <head>
      <title>Usuwanie ciasteczek za pomocą PHP</title>
   </head>
   
   <body>
      <?php echo "Usunięto ciasteczka" ?>
   </body>
   
</html>

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *