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.
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í.
Cookies | Sessions |
---|---|
Uloženo na straně klienta | Uloženo na straně serveru |
Snadno upravitelné a čitelné | Lepší pro bezpečnost, ale vyžaduje správné nastavení |
Vhodné pro uchování jazyka, stylu webu | Vhodné pro přihlášení nebo košík |
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"];
}
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();
Důležité zásady pro bezpečnost:
httponly
, secure
a samesite
parametrysetcookie("jmeno", "Karel", [
'expires' => time() + 3600,
'path' => '/',
'secure' => true,
'httponly' => true,
'samesite' => 'Strict'
]);
session_regenerate_id(true);
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.";
}
?>
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.
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