Moderné webové aplikácie často potrebujú „zapamätať“ si používateľa medzi jednotlivými stránkami – či už ide o prihlásenie, personalizáciu obsahu alebo nákupný košík. V PHP sa na to používajú dve základné technológie: cookies a sessions. V tomto článku si vysvetlíme rozdiely medzi nimi, ukážeme si, ako ich použiť v praxi a ako zabezpečiť dáta pred zneužitím.
Cookies sú malé textové súbory, ktoré sa ukladajú v prehliadači používateľa. Obsahujú jednoduché údaje, ako je napríklad meno používateľa alebo preferovaný jazyk. Cookies sú ideálne na dlhodobé zapamätanie údajov.
Sessions (relácie) sa ukladajú na serveri a identifikujú používateľa pomocou unikátneho ID (session ID), ktoré sa prenáša medzi stránkami. Sessions sú vhodné na krátkodobé ukladanie citlivejších informácií (napr. stav prihlásenia).
Cookies | Sessions |
---|---|
Uložené na strane klienta | Uložené na strane servera |
Možno ľahko upraviť alebo ukradnúť | Bezpečnejšie, ale treba správne nakonfigurovať |
Vhodné na zapamätanie jazykov, preferencií | Vhodné na prihlásenie, nákupný košík |
Na nastavenie cookie v PHP použite funkciu setcookie()
. Príklad:
<?php
setcookie("meno", "Janko", time() + 3600, "/");
?>
Týmto vytvoríte cookie s názvom meno
, ktorá bude uložená na 1 hodinu (3600 sekúnd) a bude dostupná pre celú doménu.
Na čítanie cookie použite pole $_COOKIE
:
<?php
echo "Ahoj, " . $_COOKIE["meno"];
?>
Ak cookie ešte neexistuje, musíte najprv overiť jej existenciu:
if (isset($_COOKIE["meno"])) {
echo "Vitaj späť, " . $_COOKIE["meno"];
}
Pred použitím session musíte zavolať session_start()
– ideálne na začiatku skriptu:
<?php
session_start();
$_SESSION["uzivatel"] = "admin";
?>
Na inej stránke môžete session prečítať:
<?php
session_start();
echo "Prihlásený ako: " . $_SESSION["uzivatel"];
?>
Na ukončenie session použite:
session_unset();
session_destroy();
Aj keď sú sessions bezpečnejšie než cookies, treba ich správne konfigurovať:
httponly
a secure
flag pre cookies:setcookie("meno", "Janko", [
'expires' => time() + 3600,
'path' => '/',
'secure' => true,
'httponly' => true,
'samesite' => 'Strict'
]);
session_regenerate_id(true);
login.php:
<?php
session_start();
$meno = $_POST["meno"] ?? "";
$heslo = $_POST["heslo"] ?? "";
$zapamatat = isset($_POST["remember"]);
if ($meno === "admin" && $heslo === "tajne") {
$_SESSION["uzivatel"] = $meno;
if ($zapamatat) {
setcookie("uzivatel", $meno, time() + 86400 * 30, "/", "", false, true);
}
echo "Úspešne prihlásený!";
} else {
echo "Nesprávne meno alebo heslo.";
}
?>
Na inej stránke:
<?php
session_start();
if (isset($_SESSION["uzivatel"])) {
echo "Vitaj späť, " . $_SESSION["uzivatel"];
} elseif (isset($_COOKIE["uzivatel"])) {
echo "Vitaj (cookie), " . $_COOKIE["uzivatel"];
} else {
echo "Nie ste prihlásený.";
}
?>
Cookies a sessions sú nenahraditeľné nástroje pri tvorbe dynamických webových aplikácií. Cookies sa hodia na dlhodobé preferencie, zatiaľ čo sessions sú bezpečným spôsobom, ako spravovať stav prihlásenia. Správne nastavenie vám pomôže zabezpečiť aplikáciu a zároveň ponúknuť používateľovi pohodlie.
Chcete sa naučiť, ako vytvárať bezpečné, interaktívne a plne funkčné weby v PHP? Pozrite si náš kurz PHP – Programovanie dynamických webových stránok v PHP a úvod do AJAXu a získajte praktické zručnosti, ktoré využijete v reálnych projektoch.
Viac informacií preberáme na kurze:
Kurz PHP - Programovanie dynamických webových stránok v PHP a úvod do AJAXu
Marián Knězek