Ciasteczka w PHP

Stronę tą wyświetlono już: 210 razy

Ponieważ protokół HTTP nie dostarcza możliwości przesyłania danych pomiędzy dwiema stronami konieczne było wymyślenie odpowiedniego mechanizmu na realizację tego typu zadań. Przykładem (takim najprostszym) jest stworzenie statystyki strony, która zliczałaby nowo odwiedzających stronę użytkowników. W PHP do tego typu prostych zadań służą ciasteczka, które umożliwiają przechowywanie niewielkiej ilości informacji na dysku twardym przeglądającego stronę użytkownika.

Uwaga! Ciasteczek nie powinno się wykorzystywać do przesyłania danych poufnych takich jak login czy hasło, a to dlatego, że takie dane łatwo jest wykraść.

Do tworzenia ciasteczek służy funkcja setcookie, natomiast dane z istniejącego ciasteczka utworzonego przez stronę, z której ono pochodzi są dostępne w globalnej tablicy asocjacyjnej $_COOKIE. Oto prosty przykład tworzenia takiego ciasteczka:

Listing 1
  1. <?php
  2. setcookie('last_time', time(), time() + 30 * 24 * 60 * 60); // time() - bieżąca data + 30 [dni] * 24 [godziny] * 60 [minuty] * 60 [sekundy] = czas wygaśnięcia ciasteczka w sekundach
  3. if(isset($_COOKIE['last_time'])){
  4. echo("<p>Już tu byłeś, już tę stronę nawiedziłeś!</p>");
  5. echo("<p>" . date('d.m.Y, H:i:s', $_COOKIE['last_time']) . "</p>");
  6. }else{
  7. echo("<p>Witaj w moich skromnych progach</p>");
  8. }
  9. ?>

Funkcja setcookie jako pierwszy argument przyjmuje nazwę klucza, pod którym w tablicy asocjacyjnej $_COOKIE zostanie umieszczona podana w następnym argumencie tejże funkcji wartość. Kolejny argument określa datę w sekundach, po której przekroczeniu ciasteczko wygasa (zostaje usunięte przez przeglądarkę z dysku użytkownika).

Powyższy kod po pierwszym odwiedzeniu strony powinien wyświetlić coś takiego:

Witaj w moich skromnych progach

A po odświeżeniu strony oczom twym powinno pokazać się coś takiego:

Już tu byłeś, już tę stronę nawiedziłeś!

31.12.2016, 10:24:59

Funkcja setcookie powinna być wywołana na samym początku strony, aby zadziałała poprawnie i utworzyła na dysku twardym odwiedzającego stronę ciasteczko z informacjami. Funkcja ta przyjmuje również inne parametry, takie jak:

  • path - ścieżka do folderu na serwerze, z poziomu którego dane ciasteczko będzie dostępne;
  • domain - domenę lub poddomenę z poziomu której dane ciasteczko będzie dostępne;
  • secure - gdy ustawione na TRUE to pliki cookie będą tworzone jedynie, gdy do połączenia użyto protokołu HTTPS (połączenie szyfrowane);
  • httponly - gdy ustawione na TRUE to pliki cookie będą tworzone jedynie przy połączeniu HTTP bez możliwości ich wykorzystania przez skrypt JavaScript, jednak skuteczność tego ustawienia w dużej mierze zależy od przeglądarki.

Komentarze