Cookies, czyli ciasteczka

Coś jest niejasne? Wejdź na Forum PHP i uzyskaj pomoc

Ciasteczka w PHP

Czym są ciasteczka (z ang. cookies)? To niewielki fragment informacji, który aplikacja internetowa może zapisać na komputerze użytkownika. Gdy przeglądarka łączy się ze stroną, w pierwszej kolejności szuka lokalnych cookies, odpowiednich dla danej witryny. Jeżeli znajdzie – zostaną one przekazane serwerowi.

W PHP możemy ustawić cookie za pomocą funkcji setcookie(). Zobaczmy poniżej, jak wygląda jej prototyp:

<?php

// utworzenie ciasteczka
setcookie($nazwa, $wartosc, $koniec, $sciezka, $domena, 
$bezpieczne);
?>

Setcookie() może przyjąć 6 argumentów. Jednak wymagane jest podanie tylko pierwszego, którym jest nazwa ciasteczka. $wartosc to wartość przypisana do ciastka, $koniec wyraża datę wygaśnięcia, $sciezka i $domena mogą być stosowane do określenia adresów, dla których cookie jest ważne. Ostatni argument, $bezpieczne, oznacza, że cookie nie będzie wysyłane przez zwykłe połączenie HTTP.

Zastosowanie cookies

W praktyce, najczęściej używamy trzech pierwszych argumentów. Wszelkie zapamiętywanie zalogowanego użytkownika, oddania głosu w ankiecie itp. są obsługiwane właśnie z wykorzystaniem cookies. Zasada jest prosta – jeśli cookie istnieje, to znaczy, że głos został oddany. Jeżeli nie, można oddać głos, po czym cookie jest tworzone.

<?php

// zapisanie oddania głosu jednorazowego
setcookie('oddano_glos', '1');

// w przypadku gdy głosować można raz dziennie
setcookie('oddano_glos', '1', time()+3600*24);

?>

Można łatwo zauważyć, że data wygaśnięcia podawana jest w postaci liczby sekund od 1 stycznia 1970 roku. Wygodnie jest zatem użyć funkcji time(), zwracającej liczbę sekund, które upłynęły do chwili obecnej, po czym dodać żądany czas (w naszym przypadku jest to jeden dzień, gdyż 24 godziny = 24 * 1 godzina = 24 * 3600 sekund).

Sprawdzanie obecności ciasteczka

Wiesz, jak ustawić ciasteczko, jego wartość oraz datę wygaśnięcia. Czas teraz na sprawdzanie, czy ciastko istnieje. Każde ciasto jest przechowywane w tablicy globalnej $_COOKIES. Sprawdzimy, czy istnieje cookie o nazwie „aktywacja”:

<?php

if(isset($_COOKIE['aktywacja']))
   echo "Ciasteczko istnieje";
else
   echo "Brak ciastecza o nazwie aktywacja";
?>

Ciasteczka nie są już dla Ciebie tajemnicą. Teraz czas na obsługę sesji. Zapraszam na kolejną lekcję!

Spis lekcji w rozdziale szóstym

Poprzednia lekcja: Podsumowanie działu piątego Następna lekcja: Sesje