> **Upozornění:** Tento článek byl napsán před mnoha lety a některé informace mohou být zastaralé, nebo nepravdivé. Při čtení na to, prosím, berte ohled.
Cookies jsou malé textové informace, uložené v prohlížeči návštěvníka webu. Přenáší se vždy s každou další načtenou stránkou, uživatel je může kdykoli odstranit, změnit a přečíst, proto se příliš nehodí k odkládání osobních údajů.
Pozor: Pokud váš web používá cookies k sledování uživatelů, případně doplňky třetích stran (například Facebook like button, měřič návštěvnosti Google analytics, reklamní bannery), tak musíte o tomto uživatele informovat.
"Ještě poznámka: dokud souhlas nezískáte, neměla by vaše stránka obsahovat ani reklamu, ani měřící kódy. A to jako nasrat."
-- David Grudl
Všechny cookies jsou uloženy v superglobální proměnné $_COOKIE
, která jednotlivé klíče ukládá jako pole.
Pokud jsme do cookies uložili například jméno aktuálně přihlášeného uživatele pod klíč user
, tak jej získáme snadno:
echo $_COOKIE['user'];
Pozor: Cookies nemusí vždy existovat (například pokud jde o nově přicházejícího uživatele). Před jakýmkoli výpisem bychom tedy měli vždy zkontrolovat existenci a případně nabídnout alternativní chybové hlášení.
if (isset($_COOKIE['user']) && $_COOKIE['user']) {echo 'Přihlášený uživatel: ' . $_COOKIE['user'];} else {echo 'Nikdo není přihlášený.';}
Protože jsou všechny cookies uloženy v superglobální proměnné $_COOKIE
, tak je možné je snadno vypsat:
var_dump($_COOKIE);
Nebo případně projít cyklem a získat všechny klíče a hodnoty:
foreach($_COOKIE as $key => $value) {echo $key . ': ' . $value; // vypíšeme klíč a hodnotuecho '<br>'; // zalomíme řádek}
Pro uložení dat do cookies se používá funkce setcookie()
.
Prvním parametrem nastavíme klíč cookie, podle kterého ji přečteme z pole $_COOKIE
a jako druhý parametr samotná data jako string.
Třetím parametrem můžeme (nepovinně) nastavit platnost, po které bude cookie dostupná. Čas dostupnosti se uvádí jako timestamp, pokud chceme tedy nastavit cookie s platností 1 hodina od tohoto okamžiku, tak stačí zapsat jen time() + 3600
.
$data = 'Nějaký obsah, který chceme uložit.';setcookie('TestCookie', $data);setcookie('TestCookie', $data, time() + 3600);
Cookies se pro ukládání rozsáhlejších dat nehodí (prohlížeče dovolují uložit obvykle jen 4 kB a maximálně 20 cookie, do velikosti se započítává také názvy cookies, nastavení platnosti a podobně).
Větší data je lepší uložit na server a do cookies jen identifikátor, podle kterého poznáme, k jakému uživateli patří. Této metodě se říká $_SESSION
a pojednává o nich samostatný článek.
Pokud data nepotřebujete nutně skladovat vždy synchronní na serveru, tak lze použít uložiště localstorage, které je k dispozici v javascriptu. Jeho kapacita je v řádu MB a data nepodléhají expiraci.
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:
Nabízím trénink vývojářů, konzultace, školení a analýzu návrhových vzorů. Osobně v Praze nebo online.
Napište mi, pokud si nevíte rady.
Lektor: Jan Barášek
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | cs