> **Ostrzeżenie:** Ten artykuł został napisany wiele lat temu i niektóre informacje mogą być nieaktualne lub nieprawidłowe. Należy o tym pamiętać podczas lektury.
Pliki cookie to małe fragmenty informacji tekstowych przechowywane w przeglądarce internetowej osoby odwiedzającej witrynę. Są one zawsze przesyłane z każdą kolejną wczytywaną stroną i mogą być w każdej chwili usuwane, zmieniane i odczytywane przez użytkownika, dlatego nie nadają się dobrze do przechowywania danych osobowych.
*Ostrzeżenie: jeśli witryna wykorzystuje pliki cookie do śledzenia użytkowników lub dodatki innych firm (np. przycisk "Lubię to" na Facebooku, licznik ruchu w Google Analytics, banery reklamowe), należy poinformować o tym użytkownika.
"Jeszcze jedna uwaga: witryna nie powinna zawierać reklam ani kodów pomiarowych, dopóki nie uzyskasz na to zgody. I to jest do bani".
-- David Grudl.
Wszystkie pliki cookie są przechowywane w zmiennej superglobalnej $_COOKIE
, która przechowuje każdy klucz jako tablicę.
Na przykład, jeśli w pliku cookie pod kluczem user
zapisaliśmy nazwę aktualnie zalogowanego użytkownika, możemy ją łatwo odzyskać:
echo $_COOKIE['użytkownik'];
Uwaga: Pliki cookie mogą nie zawsze istnieć (np. jeśli jesteś nowym użytkownikiem). W związku z tym zawsze należy sprawdzić, czy pliki cookie istnieją, zanim rozpoczniemy publikację, a w razie potrzeby wyświetlić alternatywny komunikat o błędzie.
if (isset($_COOKIE['użytkownik']) && $_COOKIE['użytkownik']) {echo 'Zalogowany użytkownik:' . $_COOKIE['użytkownik'];} else {echo 'Nikt nie jest zalogowany.';}
Ponieważ wszystkie ciasteczka są przechowywane w zmiennej superglobalnej $_COOKIE
, można je łatwo wylistować:
var_dump($_COOKIE);
Alternatywnie można przejść przez cały cykl i pobrać wszystkie klucze i wartości:
foreach($_COOKIE as $key => $value) {echo $key . ':' . $value; // wypisz klucz i wartośćecho '<br>.'; // zawiń linię}
Funkcja setcookie()
służy do przechowywania danych w plikach cookie.
Pierwszym parametrem jest klucz cookie, który jest używany do odczytywania go z pola $_COOKIE
, a drugim - same dane w postaci łańcucha.
Za pomocą trzeciego parametru możemy (opcjonalnie) ustawić okres ważności, przez jaki plik cookie będzie dostępny. Czas dostępności jest podawany jako timestamp, więc jeśli chcemy ustawić ciasteczko o ważności 1 godziny od tego momentu, wystarczy, że napiszemy time() + 3600
.
$data = 'Pewna zawartość, którą chcemy przechowywać.';setcookie('TestCookie', $data);setcookie('TestCookie', $data, time() + 3600);
Pliki cookie nie nadają się do przechowywania większych danych (przeglądarki zazwyczaj zezwalają na przechowywanie tylko 4 kB i maksymalnie 20 plików cookie, przy czym rozmiar ten obejmuje również nazwy plików cookie, ustawienia ważności itp.)
Większe dane lepiej jest przechowywać na serwerze, a w pliku cookie umieścić identyfikator, dzięki któremu będziemy mogli stwierdzić, do jakiego użytkownika należy dany plik. Metoda ta nosi nazwę $_SESSION
i jest omówiona w osobnym artykule.
Jeśli niekoniecznie trzeba przechowywać dane zawsze synchronicznie na serwerze, można skorzystać z localstorage pamięci masowej dostępnej w javascript. Jego pojemność jest rzędu MB, a dane nie podlegają wygaśnięciu.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | pl