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 jsou soubory cookie: Soubor cookie je malý soubor o velikosti do 4 kB, který server ukládá na serveru klienta a který se vrací s každým dalším požadavkem.
  • 🗄️ Co jsou to sezení: Relace ukládá data na serveru pod jedinečným ID, které je uloženo v poli $_SESSION a na které odkazuje soubor cookie relace.
  • 🆚 Klíčový rozdíl: Soubory cookie se nacházejí na straně klienta a jsou vhodné pro malá, necitlivá data; relace se nacházejí na serveru a obsahují větší nebo soukromá data.
  • 🛠️ Vytváření souborů cookie: Funkce setcookie() nastaví název, hodnotu a volitelné příznaky expirace, cesty, domény, zabezpečení a httponly před jakýmkoli HTML výstupem.
  • ???? Vytváření relací: session_start() zahájí relaci, po které čtete a zapisujete hodnoty prostřednictvím superglobálního pole $_SESSION.
  • 🗑️ Čištění: Platnost souboru cookie vyprší nastavením minulého času; relaci ukončíte pomocí session_destroy() nebo jednu hodnotu vymažete pomocí unset().
  • 🤖 AI Assist: Nástroje umělé inteligence mohou implementovat bezpečné zpracování relací a označovat slabiny souborů cookie nebo relací v existujícím kódu PHP.

PHP soubory cookie a relace

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í.

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í 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.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.
  • „[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

Načítání hodnoty cookie

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

  • Krok 2 – přejděte na URL http://localhost/phptuts/cookies.php

Načítání hodnoty cookie

  • Krok 3 – přepněte zpět na první kartu a poté klikněte na tlačítko Obnovit

Načítání hodnoty cookie

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.

Nejčastější dotazy

Soubory cookie ukládají data do malého souboru v prohlížeči uživatele a přenášejí se s každým požadavkem. Relační soubory ukládají data na server a odesílají pouze soubory cookie s ID relace. Relační soubory jsou bezpečnější pro citlivá nebo větší data.

Ve výchozím nastavení PHP ukládá data relace jako soubory v cestě nastavené parametrem session.save_path v souboru php.ini, často v dočasném adresáři systému. Weby s vysokou návštěvností často ukládají data do databáze, Redisu nebo Memcached.

Nastavte příznak HttpOnly tak, JavaSkript nemůže číst soubor cookie, má příznak Secure, takže se soubor přenáší pouze přes HTTPS, a atribut SameSite pro omezení odesílání mezi weby. Pro relace po přihlášení znovu vygenerujte ID.

Ano. Umělá inteligence dokáže vygenerovat přihlašovací proces, který regeneruje ID relace, nastavuje bezpečnostní příznaky souborů cookie, ukládá na straně serveru minimální data a vynucuje časové limity. Revprohlédněte si výstup s ohledem na vaše bezpečnostní požadavky.

Ano. Umělá inteligence dokáže skenovat chybějící příznaky HttpOnly nebo Secure, rizika fixace relace, ukládání citlivých dat do souborů cookie a chybějící regeneraci ID po přihlášení a poté navrhnout opravený kód.

Shrňte tento příspěvek takto: