Relácie - súbory cookie servera v jazyku PHP
Č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.
Spustenie relácie
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!
Zabezpečenie relácie
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ý).
Získavanie údajov z relácie
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 údajov do relácie
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.
Odstránenie relácií
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().
Maximálna platnosť relácie
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:
- V
php.inije nastavená maximálna dĺžka platnosti, ktorú bude server udržiavať. Hodnota je nastavená smernicousession.gc_maxlifetime, - Na strane skriptu PHP je potrebné zadať aktuálnu požadovanú platnosť.
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!