Cookie je malý kousek textu, který server pošle prohlížeči a ten ho při dalších návštěvách vrátí zpět. Hodí se k zapamatování drobností: zvoleného jazyka, souhlasu s cookies nebo naposledy zobrazené stránky.
Nastavení cookie
<?php
setcookie("jazyk", "cs", time() + 60 * 60 * 24 * 30, "/");
Funkce setcookie má čtyři hlavní části: název, hodnotu, dobu platnosti a cestu. Čas se počítá v sekundách od teď, takže tento zápis znamená 30 dní. Cesta "/" znamená, že cookie platí pro celý web.
Čtení cookie
<?php
if (isset($_COOKIE["jazyk"])) {
$jazyk = $_COOKIE["jazyk"];
} else {
$jazyk = "cs";
}
Hodnoty z cookie přicházejí přes superglobální pole $_COOKIE. Před použitím je vždy ověřte stejně jako data z formuláře, protože návštěvník mohl hodnotu změnit.
Smazání cookie
<?php
setcookie("jazyk", "", time() - 3600, "/");
Cookie smažeme tak, že ji nastavíme s časem v minulosti. Prohlížeč ji pak zahodí.
Cookie a session
Přihlášení v session ve skutečnosti také používá cookie, ale ta nese jen identifikátor session. Samotná data zůstávají na serveru. Pro citlivé údaje proto použijte session. Do cookie ukládejte jen něco nezávadného, protože ji návštěvník může číst i měnit.
Časté chyby
- Výstup před setcookie(). Cookie se nastaví jen tehdy, když ještě nic nebylo odesláno do prohlížeče. Platí stejné pravidlo jako u session.
- Čas v sekundách. Zápis s hodnotou 30 znamená 30 sekund, ne 30 dní.
- Chybějící cesta. Bez
"/"může cookie platit jen pro jednu složku a na jiné stránky se nedostane. - Důvěra v hodnotu. Návštěvník cookie může upravit, vždy ji ověřte.
Teď umíte uložit návštěvníkovi malou volbu a zase ji přečíst. Spolu se session tak máte nástroje, aby web pamatoval, co uživatel nastavil. 👍
Všechny návodyNechcete web řešit sami a chcete ho mít hotový a profesionální?
Podívejte se na tvorbu webů →© Ondřej Šteigl. Návody vznikají ve spolupráci s Claude (AI) a jsou upravovány autorem. Autorská práva k vlastním úpravám a příkladům náleží Ondřeji Šteiglovi. Kopírování nebo šíření celých textů bez písemného souhlasu je zakázáno. Výukové použití je vítáno, uveďte prosím zdroj (osteigl.cz).