NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

PHP - setcookie

Třída

Kořen \ Bez třídy

Metoda - setcookie

(PHP 4, PHP 5, PHP 7)

Funkce definuje a nastavuje cookie.

Poznámka: Funkce musí být zavolána před jakýmkoli výpisem (způsobený buď funkcí echo() nebo jen odesláním HTML části stránky před PHP direktivou). Typicky je funkce volána v PHP bloku na úplně prvních řádcích souboru index.php před jakýmkoli obsahem. Toto omezení je z důvodu, že cookie se odesílá v hlavičce požadavku a jakmile pošleme nějaký výstup, dojde k odeslání HTTP hlavičky a ta se později již podruhé odeslat nemůže.

Poznámka: při posílaní je cookie automaticky url-zakódovaná a automaticky dekódovaná při obdržení. Když to není žádoucí, použijeme funkci setrawcookie().

Procedurální

  • function setcookie (string $name, string $value = , int $expire = 0, string $path = , string $domain = , bool $secure = false, bool $httponly = false) : bool

Parametry

NázevDatový typVýchozí hodnotaPopis
$namestring

Název cookie.

$valuestring

Určuje hodnotu cookie. Jelikož je hodnota uložena v počítači klienta, neměla by obsahovat citlivá data.

$expireint 0

Určuje čas, kdy vyprší platnost cookie. Čas je uveden v sekundách (Unix timestamp, tedy jako počet sekund od 1.1.1970) a nejčastěji se nastavuje jako time() + 7*60*60 (aktuální čas + 7 hodin s přepočtem na vteřiny). Když parametr neuvedeme, platnost skončí při zavření prohlížeče (na konci session).

$pathstring

Specifikuje, pro které soubory (složky, místa) na serveru bude daná cookie dostupná: Příklady:

  • "/" = cookie je dostupná v rámci celé domény.
  • "/cookies/" = cookie je dostupná v rámci dané složky (v tomto příkladu: "cookies") a všech dalších podsložkách.
  • Výchozí hodnota = složka, ve které je daná cookie vytvořena.
$domainstring

Určuje doménu (subdoménu), pro kterou je cookie dostupná. Pro zpřístupnění cookie pro doménu a všechny její subdomény nastavíme parametr jako "mojestranka.cz". Pokud nastavíme např. "blog.mojestran­ka.cz", cookie bude přístupná pouze pro danou subdoménu (a všechny její subdomény).

$securebool false

Pokud je nastaveno na true, cookie bude předáváno pouze v případě bezpečného HTTPS připojení.

$httponlybool false

Když je nastaveno na true, cookie je přístupná pouze přes HTTP protokol (ne pro skriptovací jazyky jako JavaScript). Toto nastavení výrazně snižuje možnost ukradení relace. Výchozí nastavení je bohužel false.

Návratové hodnoty

Vrací: bool

Vrací true v případě, že funkce proběhne v pořádku. V případě, že byl již odeslán nějaký výstup vrací false. Hodnotu neovlivňuje zda uživatel cookie přidal.

Příklady

Nastavíme zabezpečenou cookie s názvem "user_name" a expirací 30 minut.

<?php
setcookie("user_name", "Chuck Norris", time() + 30 * 60, "", "", false, true);

Můžeme zkontrolovat, zda to povedlo:

<?php
echo (isset($_COOKIE["user_name"])) ? "Hodnota cookie user_name je: " . $_COOKIE["user_name"] . "<br>" : "Cookie user_name není nastavená! <br>";

Když chceme cookie pozměnit, opět nastavíme cookie s aktuálními parametry.

<?php
// Změníme hodnotu na "John Rambo" a exspiraci na 1 hodinu.
setcookie("user_name", "John Rambo", time() + 60 * 60, "", "", false, true);

Opět můžeme zkontrolovat naší „sušenku“.

<?php
echo (isset($_COOKIE["user_name"])) ? "Hodnota cookie user_name je: " . $_COOKIE["user_name"] . "<br>" : "Cookie user_name není nastavená! <br>";

Když chceme zmazat cookie, nastavíme exspirační dobu na jakýkoliv čas v minulosti.

<?php
setcookie("user_name", "", time() - 1000, "", "", false, true);

Opět můžeme zkontrolovat naší „sušenku“.

<?php
echo (isset($_COOKIE["user_name"])) ? "Hodnota cookie user_name je: " . $_COOKIE["user_name"] . "<br>" : "Cookie user_name není nastavená! <br>";

Chceme-li zjistit, jestli jsou cookies uživatelem povolené, můžeme použít jednoduchý skript.

<?php
setcookie("test_cookie_allowed", "test", time() + 60);
?>
<html>
<body>
    <?php
    // Kontrolujeme, jestli $_COOKIE obsahuje nějaký prvek.
    echo (count($_COOKIE) > 0) ? "Cookies jsou povolené." : "Cookies nejsou povolené.";
    ?>
</body>
</html>

Související manuály

      Aktivity