Sessions – serverové cookies v PHP

Často potřebujeme do cookies uložit větší objem informací, nicméně maximální limit pro cookies je 4 kB, což není moc. Sessions tento problém řeší ukládáním dat na webový server a do prohlížeče klienta uloží jen krátký identifikátor, podle kterého pozná, jaká data patří jakému klientovi.

Nastartování sessions

Před jakoukoli práci se sessions, je musíme nejprve nastartovat. To se dělá zavoláním funkce session_start() hned na začátku scriptu:

session_start();

Důrazné varování: Před zavoláním funkce session_start() nesmí proběhnout žádný výstup do HTML kódu!

Bezpečnost sessions

Obsah sessions je uložen na serveru a do prohlížeče klienta se odesílá jen identifikátor, proto uživatel nemůže žádným způsobem zjistit, co je v sessions uloženo. Jediný způsob, kterým může script ovlivnit, je smazání identifikátoru (načež mu script vygeneruje nový).

Získání dat ze session

Všechny session jsou uloženy v superglobální proměnné $_SESSION a lze je procházet jako pole.

Například jméno aktuálně přihlášeného uživatele můžeme získat zápisem:

echo $_SESSION['user'];

Pozor: Session nemusí vždy existovat (například pokud jde o nově přicházejícího uživatele). Před jakýmkoli výpisem bychom tedy měli vždy zkontrolovat existenci a případně nabídnout alternativní chybové hlášení.

if (isset($_SESSION['user']) && $_SESSION['user']) {
    echo 'Přihlášený uživatel: ' . $_SESSION['user'];
} else {
    echo 'Nikdo není přihlášený.';
}

Uložení dat do session

Ukládání se provádí jako prosté uložení dat do proměnné:

$_SESSION['user'] = 'Honzík';

O technické zajištění korektního uložení na server a odeslání identifikátoru uživateli se již postará webový server.

Smazání sessions

Jednotlivé hodnoty můžeme mazat samostatně podle klíče:

unset($_SESSION['user']);

Nebo případně všechny dostupné sessions:

unset($_SESSION);

Pozor: Smazání konkrétní session nezpůsobí vyprázdnění hodnoty klíče, ale klíč kompletně smaže. Při pokusu o čtení neexistujícího klíče bude tedy vyhozeno chybové varování. Existenci klíče můžeme vždy snadno ověřit funkcí isset().

Sponzorované odkazy
Pomohl Vám tento článek?