Spracovanie cookies a session: Ako si zapamätať používateľa medzi stránkami

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.

1. Rozdiel medzi cookies a sessions

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

CookiesSessions
Uložené na strane klientaUlož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

2. Vytváranie a čítanie cookies v PHP

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"];
}

3. Práca so session v PHP

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();

4. Bezpečnostné aspekty cookies a session

Aj keď sú sessions bezpečnejšie než cookies, treba ich správne konfigurovať:

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

5. Praktický príklad: Prihlasovanie s cookies a session

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ý.";
}
?>

Záver

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.

Ako začať programovať?

Úvod do programovania pre každého bez prechádzajúcich znalostí.

Stiahnite si náš ebook teraz výnimočne zdarma!!!

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

 

Súvisiace články: