Často potrebujeme uložiť viac informácií do cookies, ale maximálny limit pre cookies je 4 kB, čo nie je veľa. Relácie tento problém riešia tak, že údaje ukladajú na webovom serveri a v prehliadači klienta ukladajú len krátky identifikátor, ktorý určuje, ktoré údaje patria ktorému klientovi.
Predtým, ako začneme pracovať s reláciami, musíme ich najprv začať. To sa vykoná zavolaním funkcie session_start() hneď na začiatku skriptu:
session_start();
Dôrazné upozornenie: pred volaním funkcie
session_start()sa nesmie vykonať žiadny výstup do HTML kódu!
Obsah relácie je uložený na serveri a do klientskeho prehliadača sa posiela iba identifikátor, takže používateľ nemá možnosť zistiť, čo je v relácii uložené. Jediný spôsob, ako môže skript ovplyvniť používateľa, je vymazanie identifikátora (po ktorom skript vygeneruje nový).
Všetky relácie sú uložené v superglobálnej premennej $_SESSION a možno ich prechádzať ako pole.
Napríklad meno aktuálne prihláseného používateľa možno získať zápisom:
echo $_SESSION['používateľ'];
Poznámka: Relácia nemusí vždy existovať (napríklad ak ste nový používateľ). Preto by sme mali vždy pred každým výpisom skontrolovať, či existuje, a v prípade potreby ponúknuť alternatívne chybové hlásenie.
if (isset($_SESSION['používateľ']) && $_SESSION['používateľ']) {echo 'Prihlásený používateľ:' . $_SESSION['používateľ'];} else {echo 'Nikto nie je prihlásený.';}
Ukladanie sa vykonáva ako jednoduché uloženie údajov do premennej:
$_SESSION['používateľ'] = 'Honzik';
Webový server sa postará o technické zabezpečenie správneho uloženia na serveri a odoslanie identifikátora používateľovi.
Jednotlivé hodnoty možno vymazať samostatne podľa kľúča:
unset($_SESSION['používateľ']);
Prípadne všetky dostupné relácie:
unset($_SESSION);
Poznámka: Odstránením konkrétnej relácie sa nevyprázdni hodnota kľúča, ale kľúč sa úplne odstráni. Preto sa pri pokuse o načítanie neexistujúceho kľúča vyhodí varovanie o chybe. Existenciu kľúča môžeme vždy ľahko overiť pomocou funkcie
isset().
Každá uložená relácia má limit, ako dlho bude uložená na serveri. PHP priamo obsahuje skript cron, ktorý pravidelne odstraňuje staré relácie.
Predvolená hodnota je zvyčajne 1440 sekúnd, čo je 24 minút.
Zvýšenie hodnoty je potrebné vykonať na 2 miestach:
php.ini je nastavená maximálna dĺžka platnosti, ktorú bude server udržiavať. Hodnota je nastavená smernicou session.gc_maxlifetime,Použitie v PHP:
// server teraz udrží reláciu až 3600 sekúnd = 1 hodinaini_set('session.gc_maxlifetime', '3600');// všetci klienti (prehliadače) budú// relácia odoslaná s platnosťou presne 3600 sekúndsession_set_cookie_params(3600);session_start(); // môžeme začať reláciu!
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články a novinky nejen ze světa PHP a programování. Nenechte si ujít jediný článek.
Články píše Jan Barášek © 2009-2025 | Kontakt | Mapa webu
Status | Aktualizováno: ... | sk