- Session
1.1 Vytvárame session - funkcia session_start();
1.2 Premenné v session
- Session id
- Ničenie session - funkcia session_destroy();
- Funckia session_name();
SESSION
Ja sa radšej budem držať anglického názvu session. Session je prostriedok ako medzi jednotlivými prístupmi zachovávať a predávať dáta. Typickým príkladom session je prihlasovanie užívateľov na server , kde ak prebehne prihlásenie , vytvorí sa session a uloží do nej jednoznačný identifikátor nášho užívateľa. Počas celej jeho práce má každý php skript prístup k session a preto aplikácia vie ,kto s ňou narába. Až dovtedy pokiaľ sa užívateľ neodhlási - session zničí.
Výhodou session je ,že všetky citlivé dáta sú uložené na serveri a aplikácia si prenáša len session id - automaticky generovaný jednoznačný identifikátor session.
session_start();
Táto funkcia sa používa pre vytvorenie session. Tá najprv skontroluje či neexistuje id nejakej prebiehajúcej session , ak nie tak vytvorí novú.Ak áno , tak znova spustí prebiehajúcu session.
Túto funkciu takisto ako set_cookie() ,treba použiť ešte pred akýmkoľvek výstupom skriptu. Teda ešte pred znak <HTML>.
premenné v session
V článku o superglobálnych premenných sme si povedali ,že k session pristupujeme pomocou poľa $_SESSION. Ak chceme vytvoriť novú premennú pristupujeme k nej ako k prvku poľa.
$_SESSION["premenna"] = hodnota;
Príklad 25
<?php session_start(); //spustenie session $_SESSION["premenna"]="hodnota"; //nastavenie premennej ?> <html> <body> <?php // získanie hodnoty premennej echo $_SESSION["premenna"]; //vypise hodnota ?> </body> </html> |
Ak chceme premennú zmazať použijeme na to funkciu unset ();
Ak by sme chceli zrušiť predošlú premennú , použijeme zápis :
unset($_SESSION["premenna"]);
SESSION ID
Aby sme využili silu session , musíme vedieť prenášať meno session , resp. jej id. Session id (SID) je automaticky generovaný jednoznačný identifikátor danej session.Je to vlastne konštanta ,ktorá v prípade ,že pracujú cookies neobsahuje žiadnu hodnotu - identifikátor je uložený cez cookies , ak sú tie zakázané obsahuje identifikátor pre predanie session cez url. Názov tejto premennej sa môže líšiť v závislosti od nastavenia webservera.
Ak je SID vygenerované , stačí nám ho pridať za odkaz na ďalšiu stránku :
<a href="stranka2.php?<?php echo SID; ?>">odkaz</a>
Viac už napovie ďalší príklad :
Príklad 26
súbor 1
<?php session_start(); //spustenie session $_SESSION["premenna"]="hodnota"; //nastavenie premennej ?> <html> <body> <?php // získanie hodnoty premennej echo $_SESSION["premenna"]; //vypise hodnota ?> <a href="priklad26_2.php?<?php echo SID; ?>">odkaz</a> //odkaz pomocou sid </body> </html> |
súbor 2
<?php session_start(); ?> <html> <body> <?php echo $_SESSION["premenna"]; ?> </body> </html> |
Ako som už písal SID sa používa vtedy ak cookies nepracujú , ak pracujú tak nemá žiadnu hodnotu.
Na otestovanie nastavenej session môžme použiť podobne ako pri cookies isset , alebo isvalid.
if (isset($_SESSION["session"]) {
....
NIČENIE SESSION
Na ničenie ,resp. mazanie používame v PHP funkciu session_destroy(); Ale pozor , jednotlivé premenné musíme odstrániť pomocou unset !Ak by sme chceli zrušiť predošlú session aj s premennou "premenna" ,použijeme :
unset($_SESSION["premenna"]);
session_destroy();
session_name()
Nastavenie názvu id pre session (východzie PHPSESSID=meno) má na starosti nastavenie servera - php.ini. Konkrétne direktíva session.name . Avšak PHP pozná funkciu :session_name();
Bez použitia parametra vracia názov id danej session.
Jej jediným voliteľným parametrom je nový názov id session. Tento musí obsahovať len alfanumerické znaky a táto funckia musí byť zavolaná ešte pred session_start().
Pre kompletný zoznam funkcií použite odkaz (v angličtine) na konci.
Tento článok Vás mal obznámiť so session v PHP. Pre praktické využitie ,napr. prihlasovanie užívateľov , je najelegantnejším riešením využiť databázu. Celkovo problematika autorizácie užívateľov si vyžaduje samostatný článok.
Články
Predošlý článok : 9. Cookies
Nasledujúci článok : 11. PHP a databáza MySQL
Odkazy
Stiahnite si príklady vypracované v článku
Externý odkaz www.php.net - zoznam funkcií pre prácu so session
Komentáre