Sessions
Samotné cookies nie sú z mnohých dôvodov vhodné na posielanie väčšieho množstva dát medzi serverom a používateľom. Zvyšujú množstvo prenášaných dát, nie sú príliš bezpečné, lebo nie sú šifrované a naviac nie sú spoľahlivé. Každý webový prehliadač umožňuje používateľovi rozhodnúť, či bude cookies automaticky prijímať alebo odmietať. Cookies môžu byť vhodným doplnkom aplikácie, ale nesmie na nich byť založená vlastná funkčnosť.
Mechanizmus session premenných je síce založený na cookies, ale umožňuje použiť aj alternatívne prostriedky. Základná myšlienka je: k používateľovi a späť putuje len nejaký náhodný reťazec alebo veľké číslo slúžiace ako identifikácia používateľa. Všetky dáta spojené s prácou používateľa na danom webe (napr. počet návštev, obsah nákupného košíka, používateľské meno a pod.), sú uložené na danom serveri, napríklad v databáze.
Pri každom našom prístupe na server je zisťované, či existuje pre nás platná session. Pokiaľ nie, je vytvorená. Pokiaľ áno, zistí to server podľa zaslanej cookie s identifikáciou našej session.
Výhody oproti cookies
- Bezpečnosť - citlivé dáta nie je potrebné prenášať medzi používateľom a serverom a riskovať ich prezradenie.
- Anonymita - identifikácia session je anonymná a nedáva žiadnu informáciu ani o používateľovi, ani o dátach na serveri.
- Rýchlosť - nie je potrebné prenášať toľko dát v hlavičkách http požiadavky alebo odpovedi a preto je komunikácia medzi serverom a klientom rýchlejšia.
- Spoľahlivosť - mechanizmus session premenných nie je na cookies závislý, dokáže v prípade potreby využiť aj iné prostriedky (najčastejšie pomocou URL)
Vytvorenie
bool session_start ( void )
session_start() - na každej stránke, kde chceme pracovať so sessions, je treba volať túto funkciu.
Pridanie a získanie hodnoty zo session
<?php
session_start();
// vloženie do session premennej
$_SESSION['username']=$_POST["login"];
//získanie dát zo session premennej
echo "Prihlásený používateľ: ". $_SESSION['username'];
?>
Vymazanie
<?php
// odhlásenie
unset($_SESSION["username"]);
session_destroy();
if (!$_SESSION["username"])
echo "Boli ste uspesne odhlaseny zo systemu.
?>

