Č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 píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | sk