Relace PHP a soubory cookie PHP s příkladem

Co je cookie?

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 číst z domény 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čů má možnosti pro zakázání souborů cookie, souborů cookie třetích stran nebo obojího.

Pokud tomu tak je, PHP odpoví předáním tokenu cookie v URL.

Níže uvedený diagram ukazuje, jak soubory cookie fungují.

Co je Cookie

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í sledovat stav 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 Temporal Internet Files.
  • Přizpůsobení uživatelské zkušenosti – toho je dosaženo tím, že uživatelům umožníte vybrat si své preference. Požadované stránky, které následují, jsou personalizovány na základě nastavených preferencí v souborech cookie.
  • Sledování stránek navštívených uživatelem

Vytváření souborů cookie

Podívejme se nyní na základní syntaxi použitou k vytvoření cookie.

<?php

setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]);

?>

TADY,

  • Php „setcookie“ je Funkce PHP použité k vytvoření cookie.
  • „cookie_name“ je název souboru cookie, který server použije při získávání jeho hodnoty z proměnné pole $_COOKIE. Je to povinné.
  • „cookie_value“ je hodnota souboru cookie a je povinná
  • „[expiry_time]“ je nepovinné; lze jej použít k nastavení doby vypršení platnosti souboru cookie, například 1 hodiny. Čas se nastavuje pomocí funkcí PHP time() plus nebo mínus počet sekund větší než 0, tj. time() + 3600 na 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á, lze ji použít k definování hierarchie přístupu k souborům cookie, tzn www.cookiedomain.com znamená celou doménu, zatímco www.sub.cookiedomain.com omezuje přístup k souborům cookie www.sub.cookiedomain.com a jeho subdomény. Upozorňujeme, že je možné mít subdoménu subdomény, pokud celkový počet znaků nepřesáhne 253 znaků.
  • „[secure]“ je nepovinné, výchozí hodnota je false. Používá se k určení, zda je soubor cookie odeslán prostřednictvím protokolu https, pokud je nastaven na hodnotu true, nebo http, pokud je nastaven na hodnotu false.
  • „[Httponly]“ je nepovinné. Pokud je nastaveno na true, pak pouze skriptovací jazyky na straně klienta, tzn JavaScénář k nim nemá přístup.

Poznámka: funkce php set cookie musí být provedena před úvodní značkou 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 cookie, jehož platnost vyprší po deseti 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 PHP postavená v super globální proměnné.

Obsahuje názvy a hodnoty všech nastavených souborů cookie.

Počet hodnot, které

$_COOKIE pole může obsahovat závisí na velikosti paměti nastavené v php.ini.

Výchozí hodnota je 1 GB.

Testování naší aplikace.

Předpokládejme, že jste uložili své soubory PHP do složky phptus.

  • Krok 1 – otevřete webový prohlížeč a zadejte URL http://localhost/phptuts/cookies_read.php

Načítání hodnoty cookie

Poznámka: Bylo zobrazeno pouze prázdné pole

  • Krok 2 – Prohlížeč na adresu URL http://localhost/phptuts/cookies.php

Načítání hodnoty cookie

  • Krok 3 – Přepněte zpět na první kartu a klikněte na tlačítko obnovit

Načítání hodnoty cookie

Počkejte minutu a poté znovu klikněte na tlačítko obnovit. Jakých výsledků 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 adresu URL http://localhost/phptuts/cookie_destroy.php
  • Přepněte na adresu URL http://localhost/phptuts/cookies_read.php jaké výsledky 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ží na počítač uživatele a vrátí se s každým požadavkem na server. Pokud klientský prohlížeč nepodporuje soubory cookie, zobrazí se v adrese URL jedinečné ID relace php
  • 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 bezpečněji ukládat důležité informace, jako je ID uživatele, na serveru, kde se s nimi uživatelé se zlými úmysly nemohou smířit.
  • Chcete předávat hodnoty z jedné stránky na druhou.
  • Chcete alternativu k souborům cookie v prohlížečích, které nepodporují soubory cookie.
  • Chcete ukládat globální proměnné efektivněji a bezpečněji ve srovnání s jejich předáváním v URL
  • Vyvíjíte aplikaci, jako je nákupní košík, který musí dočasně ukládat informace s kapacitou větší než 4 kB.

Vytvoření relace

Chcete-li vytvořit relaci, musíte nejprve zavolat funkci PHP session_start a poté uložit své hodnoty do proměnné pole $_SESSION.

Předpokládejme, že chceme vědět, kolikrát byla stránka načtena, můžeme k tomu použít relaci.

Níže uvedený kód ukazuje, jak vytvářet a načítat hodnoty z relací

<?php

session_start(); //start the PHP_session function 

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í všech proměnných relace Php.

Pokud chcete zničit pouze jednu položku relace, použijte 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í.

Unset uvolní pouze jednotlivé proměnné relace.

Ostatní údaje zůstávají nedotčeny.

Shrnutí

  • Cookies jsou malé soubory uložené v počítači uživatele
  • Soubory cookie lze číst pouze z vydávající domény
  • Soubory cookie mohou mít dobu platnosti, pokud není nastavena, platnost cookie vyprší při zavření prohlížeče
  • Relace jsou jako globální proměnné uložené na serveru
  • Každé relaci je přiděleno jedinečné identifikační ID, které se používá ke sledování proměnných pro uživatele.
  • Soubory cookie i relace musí být spuštěny před odesláním značek HTML do prohlížeče.