PHP Obsługa Cookies

article-thumbnail

Na pewno wszyscy kojarzymy to denerwujące powiadomienie na dole strony, mówiące że witryna używa plików Cookies. Jednak niewiele osób zdaje sobie sprawę czym ów ciasteczka są i do czego możemy je wykorzystać.

Plikami Cookies nazywamy pewne niewielki pliki, zapisywane po stronie klienta. Przechowują one informacje. Często wykorzystuje się je do generowania spersonalizowanych reklam (przechowują informację np. o tym co ostatnio przeglądaliśmy). Warto zaznaczyć, że możemy je zobaczyć, ale zazwyczaj nie damy rady ich zinterpretować. Po prostu większość informacji jakie w nich znajdziemy jest zrozumiała tylko gdy znamy kod back-endu.

Każde ciasteczko zawiera kilka ważnych informacji. W śród tych wartości znajdziemy nazwę ciasteczka, jego wartość, domenę która je wygenerowała, czy datę wygaśnięcia. Warto zapamiętać, że informacje o sesji są zapisywane właśnie w ciasteczku. Gdy wejdziemy w narzędzia deweloperskie na witrynie którą tworzyliśmy we wpisie o sesji, znajdziemy tam następujące ciasteczko:

Implementacja w PHP

Skoro mamy już pewną podstawową wiedzę, możemy przejść do tworzenia i obsługi ciasteczek w naszym serwisie. Na początek je ustawmy. Posłużymy się w tym celu funkcją setcookie(). Przyjmuje ona szereg atrybutów, na podstawie których zostanie stworzone ciasteczko. Oto przykładowa implementacja ciasteczka.

setcookie("TestCookie", $value);

W takim przykładzie powstanie ciasteczko, jednak nie zdefiniowaliśmy mu kilku istotnych parametrów. Przede wszystkim nie wiemy kiedy wygaśnie. Aby to naprawić dodajmy mu czas wygaśnięcia. Musimy go podać w sposób obiektywny czyli licząc wedle czasu Unixowego. Użyjemy funkcji time() która zwróci ile sekund minęło od pierwszego stycznia 1970r. Następnie dodamy do tej wartości liczbę sekund, jaką ciasteczko ma istnieć. Stworzę dwa cookies, pierwsze będzie istniało dopóki przeglądarka będzie otwarta. Drugie zniknie po 2 godzinach od stworzenia. Oto implementacja:

<?php
  setcookie("Cookie1", "Zniknę po zamknięciu", 0);
  setcookie("Cookie2", "Zniknę za 2 godziny", time()+2*3600);
?>

Rezultat wygląda następująco.

Okej, stworzyliśmy ciasteczko, więc pora nauczyć się je wykorzystywać. Na pewno chcielibyśmy odczytać jego wartość. Do odczytania tejże wykorzystamy ten sam sposób co w przypadku sesji. Najpierw sprawdzimy czy odpowiednia „szufladka” w globalnej tablicy $_COOKIES jest ustawiona, a następnie ją otworzymy. Tak samo jak przy sesji, indeksem tej tablicy jest ciąg znaków będący nazwą ciasteczka. Oto przykładowa implementacja:

<?php
  setcookie("Ciasteczko", "Zawartość ciasteczka");

  if(isset($_COOKIE['Ciasteczko']))
  {
    echo $_COOKIE['Ciasteczko'];
  }
?>

Rezultatem jest wyświetlenie strony na której znajduje się napis Zawartość ciasteczka. Polecam zapoznać się dokumentacją PHP w tym temacie, gdyż powyższy wpis jest jedynie wprowadzeniem do zagadnienia.