Relace PHP a soubory cookie PHP s příkladem
⚡ Chytré shrnutí
Soubory cookie a relace v PHP zachovávají stav v rámci bezstavového protokolu HTTP, ale data ukládají odlišně. Tento návod vysvětluje, jak soubory cookie ukládají malé soubory na straně klienta, jak relace uchovávají data na serveru a jak je vytvářet, číst a ničit pomocí funkčního kódu.

Co je cookie?
Soubor cookie je malý soubor o maximální velikosti 4 KB, který webový server ukládá na klientském počítači.
Jakmile je soubor cookie nastaven, všechny následující požadavky na stránky vrátí název a hodnotu souboru cookie.
Soubor cookie lze číst pouze z domény, ze které byl vydán. Například soubor cookie nastavený pomocí domény www.guru99.com nelze z této domény číst. kariéra.guru99.com.
Většina webových stránek na internetu zobrazuje prvky z jiných domén, jako je reklama. Domény obsluhující tyto prvky mohou také nastavit své vlastní soubory cookie. Tyto soubory jsou známé jako soubory cookie třetích stran.
Soubor cookie vytvořený uživatelem může být viditelný pouze pro něj. Ostatní uživatelé nevidí jeho hodnotu.
Většina webových prohlížečů nabízí možnosti pro zakázání souborů cookie, souborů cookie třetích stran nebo obojího.
Pokud je tomu tak, PHP reaguje předáním tokenu cookie v URL.
Níže uvedený diagram ukazuje, jak soubory cookie fungují.
Zde,
1) Uživatel požaduje stránku, která ukládá soubory cookie
2) Server nastaví cookie na počítači uživatele
3) Jiné požadavky na stránku od uživatele vrátí název a hodnotu cookie
Proč a kdy používat soubory cookie?
- HTTP je bezstavový protokol; soubory cookie nám umožňují tracstav aplikace pomocí malých souborů uložených v počítači uživatele. Cesta, kam jsou soubory cookie uloženy, závisí na prohlížeči. Internet Explorer je obvykle ukládá do složky Dočasné soubory Internetu.
- Personalizace uživatelského prostředí – toho je dosaženo tím, že si uživatelé mohou vybrat své preference. Následující požadavky na stránky jsou personalizovány na základě preferencí nastavených v souborech cookie.
- Tracking stránky navštívené uživatelem
Vytváření souborů cookie
Pojďme se nyní podívat na základní syntaxi používanou k vytvoření souboru cookie.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
TADY,
- „setcookie“ je Funkce PHP použité k vytvoření cookie.
- „cookie_name“ je název cookie, který server použije při načítání jeho hodnoty z proměnné pole $_COOKIE. Je to povinný údaj.
- „cookie_value“ je hodnota souboru cookie a je povinná.
- „[expiry_time]“ je volitelný; lze jej použít k nastavení doby platnosti cookie, například 1 hodina. Čas se nastavuje pomocí funkce PHP time() plus nebo mínus počet sekund větší než 0, tj. time() + 3600 pro 1 hodinu.
- „[cesta_cookie]“ je nepovinné; lze jej použít k nastavení cesty cookie na serveru. Lomítko „/“ znamená, že soubor cookie bude zpřístupněn v celé doméně. Podadresáře omezují přístup cookie k subdoméně.
- „[doména]“ je volitelný atribut; lze jej použít k definování hierarchie přístupu k souborům cookie, tj.
www.cookiedomain.comznamená celou doménu, zatímcowww.sub.cookiedomain.comomezuje přístup k souborům cookiewww.sub.cookiedomain.coma jeho subdomény. - „[secure]“ je volitelné; výchozí hodnota je false. Používá se k určení, zda je soubor cookie odeslán přes HTTPS, pokud je nastaven na true, nebo HTTP, pokud je nastaven na false.
- „[httponly]“ je volitelné. Pokud je nastaveno na hodnotu true, pak skriptovací jazyky na straně klienta, jako například JavaScénář nemůže získat přístup k souboru cookie.
Poznámka: Funkce setcookie v PHP musí být spuštěna před otevíracím tagem HTML.
Podívejme se nyní na příklad, který používá soubory cookie.
Vytvoříme základní program, který nám umožní uložit uživatelské jméno do souboru cookie, jehož platnost vyprší po šedesáti sekundách.
Níže uvedený kód ukazuje implementaci výše uvedeného příkladu „cookies.php“.
<?php setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>
Výstup:
the cookie has been set for 60 seconds
Načítání hodnoty cookie
Vytvořte další soubor s názvem „cookies_read.php“ s následujícím kódem.
<?php
print_r($_COOKIE); // output the contents of the cookie array variable
?>
Výstup:
Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )
Poznámka: $_COOKIE je vestavěná superglobální proměnná PHP. Obsahuje názvy a hodnoty všech nastavených souborů cookie.
Počet souborů cookie a jejich velikost je omezena prohlížečem, obvykle se jedná o přibližně 50 souborů cookie na doménu a 4 KB na soubor cookie.
Testování naší aplikace. Předpokládejme, že jste si uložili soubory PHP do složky phptuts.
- Krok 1 – otevřete webový prohlížeč a zadejte URL http://localhost/phptuts/cookies_read.php
Poznámka: Bylo zobrazeno pouze prázdné pole
- Krok 2 – přejděte na URL http://localhost/phptuts/cookies.php
- Krok 3 – přepněte zpět na první kartu a poté klikněte na tlačítko Obnovit
Počkejte minutu a poté znovu klikněte na tlačítko Obnovit. Jaké výsledky jste dosáhli?
Smazat soubory cookie
- Pokud chcete soubor cookie zničit před uplynutím doby platnosti, nastavte dobu platnosti na čas, který již uplynul.
- Vytvořte nový soubor s názvem cookie_destroy.php s následujícím kódem
<?php setcookie("user_name", "Guru99", time() - 360,'/'); ?>
- Opakujte kroky 1 až 3 z výše uvedené části o načítání hodnot souborů cookie.
- Otevřete URL http://localhost/phptuts/cookie_destroy.php
- Přepněte na URL http://localhost/phptuts/cookies_read.phpJaké výsledky to zobrazuje?
Co je to relace?
- Relace je globální proměnná uložená na serveru.
- Každé relaci je přiřazeno jedinečné ID, které se používá k načtení uložených hodnot.
- Kdykoli je vytvořena relace, soubor cookie obsahující jedinečné ID relace se uloží do počítače uživatele a vrátí se s každým požadavkem na server. Pokud klientský prohlížeč nepodporuje soubory cookie, zobrazí se jedinečné ID relace PHP v URL.
- Relace mají kapacitu pro ukládání relativně velkých dat ve srovnání s cookies.
- Hodnoty relace se automaticky vymažou při zavření prohlížeče. Pokud chcete hodnoty uložit trvale, měli byste je uložit do databáze.
- Stejně jako proměnná pole $_COOKIE jsou proměnné relace uloženy v proměnné pole $_SESSION. Stejně jako soubory cookie musí být relace zahájena před všemi značkami HTML.
Proč a kdy používat Sessions?
- Chcete důležité informace, jako je uživatelské ID, bezpečněji ukládat na server, kde s nimi uživatelé se zlými úmysly nemohou manipulovat.
- Chcete předávat hodnoty z jedné stránky na druhou.
- Chcete alternativu k souborům cookie v prohlížečích, které soubory cookie nepodporují.
- Chcete ukládat globální proměnné efektivnějším a bezpečnějším způsobem ve srovnání s jejich předáváním v URL.
- Vyvíjíte seping aplikace, jako například obchodping vozík, který musí dočasně ukládat informace s kapacitou větší než 4KB.
Vytvoření relace
Abyste mohli vytvořit relaci, musíte nejprve zavolat funkci PHP session_start a poté uložit hodnoty do proměnné pole $_SESSION.
Předpokládejme, že chceme vědět, kolikrát byla stránka načtena. K tomu můžeme použít relaci.
Následující kód ukazuje, jak vytvářet a načítat hodnoty z relací.
<?php session_start(); // start the session if(isset($_SESSION['page_count'])) { $_SESSION['page_count'] += 1; } else { $_SESSION['page_count'] = 1; } echo 'You are visitor number ' . $_SESSION['page_count']; ?>
Výstup:
You are visitor number 1
Zničení proměnných relace
Funkce session_destroy() se používá ke zničení celé PHP relace.
Pokud chcete zničit pouze jednu položku relace, použijete funkci unset().
Níže uvedený kód ukazuje, jak používat obě metody.
<?php
session_destroy(); // destroy entire session
?>
<?php unset($_SESSION['product']); // destroy product session item ?>
session_destroy odstraní všechna data relace, včetně souborů cookie spojených s relací.
Příkaz unset uvolní pouze jednotlivé proměnné relace. Ostatní data zůstanou nedotčena.




