PHP - setcookie
Třída
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ázev | Datový typ | Výchozí hodnota | Popis |
---|---|---|---|
$name | string | Název cookie. | |
$value | string | Určuje hodnotu cookie. Jelikož je hodnota uložena v počítači klienta, neměla by obsahovat citlivá data. | |
$expire | int | 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
|
$path | string | Specifikuje, pro které soubory (složky, místa) na serveru bude daná cookie dostupná: Příklady:
| |
$domain | string | 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.mojestranka.cz", cookie bude přístupná pouze pro danou subdoménu (a všechny její subdomény). | |
$secure | bool | false | Pokud je nastaveno na |
$httponly | bool | false | Když je nastaveno na |
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
- function header () : void