Zpracování cookies a session: Jak si zapamatovat uživatele mezi stránkami

V moderních webových aplikacích je často potřeba si zapamatovat uživatele – například při přihlašování, personalizaci webu nebo správě nákupního košíku. PHP nabízí dva hlavní nástroje: cookies a session. V tomto článku si vysvětlíme jejich rozdíly, použití v praxi a bezpečnostní aspekty.

1. Rozdíl mezi cookies a sessions

Cookies jsou malé soubory, které se ukládají v prohlížeči uživatele. Jsou ideální pro dlouhodobé uchování nenáročných informací – například jména nebo preferovaného jazyka.

Sessions jsou uloženy na straně serveru. Pro identifikaci uživatele se používá unikátní ID, které se přenáší mezi stránkami. Sessions jsou vhodné pro dočasné a citlivější informace, jako je stav přihlášení.

CookiesSessions
Uloženo na straně klientaUloženo na straně serveru
Snadno upravitelné a čitelnéLepší pro bezpečnost, ale vyžaduje správné nastavení
Vhodné pro uchování jazyka, stylu webuVhodné pro přihlášení nebo košík

2. Vytvoření a čtení cookies v PHP

Pro vytvoření cookie použijte funkci setcookie():

<?php
setcookie("jmeno", "Karel", time() + 3600, "/");
?>

Cookie je uložena na 1 hodinu (3600 sekund) a přístupná v celé doméně.

Pro čtení cookie použijte $_COOKIE:

<?php
echo "Ahoj, " . $_COOKIE["jmeno"];
?>

Pokud cookie neexistuje:

if (isset($_COOKIE["jmeno"])) {
  echo "Vítej zpět, " . $_COOKIE["jmeno"];
}

3. Práce se session v PHP

Před použitím session je nutné zavolat session_start():

<?php
session_start();
$_SESSION["uzivatel"] = "admin";
?>

Na jiné stránce pak můžeme session číst:

<?php
session_start();
echo "Přihlášený jako: " . $_SESSION["uzivatel"];
?>

Ukončení session:

session_unset();
session_destroy();

4. Bezpečnost cookies a session

Důležité zásady pro bezpečnost:

setcookie("jmeno", "Karel", [
  'expires' => time() + 3600,
  'path' => '/',
  'secure' => true,
  'httponly' => true,
  'samesite' => 'Strict'
]);

5. Praktická ukázka: Přihlašovací systém s cookies a session

login.php:

<?php
session_start();
$jmeno = $_POST["jmeno"] ?? "";
$heslo = $_POST["heslo"] ?? "";
$zapamatovat = isset($_POST["remember"]);

if ($jmeno === "admin" && $heslo === "tajne") {
  $_SESSION["uzivatel"] = $jmeno;
  if ($zapamatovat) {
    setcookie("uzivatel", $jmeno, time() + 86400 * 30, "/", "", false, true);
  }
  echo "Přihlášení bylo úspěšné!";
} else {
  echo "Chybné jméno nebo heslo.";
}
?>

jiná stránka:

<?php
session_start();
if (isset($_SESSION["uzivatel"])) {
  echo "Vítej, " . $_SESSION["uzivatel"];
} elseif (isset($_COOKIE["uzivatel"])) {
  echo "Vítej (cookie), " . $_COOKIE["uzivatel"];
} else {
  echo "Nejste přihlášen.";
}
?>

Závěr

Cookies a session patří k základním stavebním kamenům interaktivního webu. Každá má své výhody a rizika. Pokud víte, kdy kterou použít a jak ji zabezpečit, můžete vytvářet spolehlivé aplikace s důrazem na uživatelský komfort aj bezpečnost.

Chcete se naučit PHP od základů a tvořit vlastní přihlašovací systémy, e-shopy nebo formuláře? Podívejte se na náš kurz PHP – Programovanie dynamických webových stránok v PHP a úvod do AJAXu a začněte psát skutečné aplikace.

Jak začít programovat?

Úvod do programování pro každého bez předchozích znalostí.

Stáhněte si náš ebook teď výjimečně zdarma!!!

Viac informacií preberáme na kurze:

Kurz PHP - Programování dynamických webových stránek v PHP a úvod do AJAXu

Marián Knězek