Controlul sesiunii in PHP




Controlul sesiunii reprezintă posibilitatea de a urmări un utilizator în timpul umei singure sesiuni pe un site Web.În versiunile mai mici decật 4 controlul sesiunii era oferit prin PHPlib.Începậnd cu versiunea 4 , PHP conţine funcţii native pentru controlul sesiunii.
Sesiunile în PHP sunt conduse de un identificator (ID) de sesiune unic, un număr criptografic aleator.Acest ID de sesiune este generat de PHP şi este stocat pe partea de client pentru întraga durată a sesiunii.Acest ID poate fi stocat fie pe calculatorul utilizatorului într-un bloc cookie, fie transferat prin URL-uri.
UD-ul de sesiune funcţionează ca o cheie care vă permite înregistrarea unor variabile particulare numite variabile de sesiune.Conţinutul acestor variabile este stocat pe server.ID-ul de sesiune este singura informaţie vizibilă pe partea de client.Dacă în momentul unei anumite conexiuni la site, ID-ul de sesiune este vizibil fie printr-un bloc cookie, fie printr-un URL , atunvi se pot accesa variabilele de sesiune stocate pe server pentru acea sesiune.
Un bloc cookie este un mic calup de informaţii pe care scripturile le pot stoca pe un sistem aflat pe partea de client.Un bloc cookie pe sistemul unui utilizator se poate configura prin trimiterea unui preambul HTTP conţinậnd date în urmatorul format :



Set-Cookie: NUME=VALOARE; [expires=DATA;] [path=CALE;]
[domain=NUME-DOMENIU;] [secure]
Acesta va crea un bloc cookie numit NUME,avậnd valoarea VALOARE .Ceilalţi parametri sint opţionali.Cậmpul expires stabileşte data pậna la care este relevant blocul cookie.Dacă nu se stabileşte o dată de expirare, atunci blocul cookie va fi permanent, pậnă cand va fi şters manual .; path şi domain pot fi utilizate împreună pentru a specifica URL-ul sau URL-urile pentru care este relevant blocul cookie.

Crearea blocurilor cookie din PHP

În PHP se pot stabili manual blocuri cookie utilizậnd funcţia setcookie(). Această funcţie are următorul prototip :

Int setcookie (string nume [,string valoare [, int expira [, string cale [, string domeniu [, int sigur]]]]])
Dacă se stabileşte un bloc cookie in felul următor :
setcookie('bloc_cookie', 'valoare');
cậnd utilizatorul viziteaza pagina următoare din site sau reîncarcă pagina curentă veţi avea acces la blocul cookie fie prin $_COOKIE['bloc_cookie'], fie prin $HTTP_COOKIE_VARS["bloc_cookie"].Sau dacă este activată opţiunea regsiter_globals se poate accesa prin $bloc_cookie.

Stocarea ID-ului de sesiune

În mod presatbilit, PHP va utiliza blocuri cookie pentru sesiuni. Dacă este posibil ( browser-ul acceptă blocuri cookie ) se va crea un bloc cookie care să stocheze ID-ul de sesiune.
Cealaltă metodă care se poate folosi este adăugarea ID-ului de sesiune la URL.Acest lucru poate fi setat automat prin compilarea PHP cu opţiunea -enable -trans-sid.Această opţiune este implicită incepậns cu PHP- versiunea 4.2.ID-ul de sesiune este stocat în constanta SID.

Implementarea sesiunilor simple

Etapele de bază pentru utilizarea sesiunilor sunt :

1. Pornirea sesiunii - se poate face în 3 moduri :
1.1 - printr-un scripr cu un apel al funcţiei session_start ()
- această funcţie verifică dacă există deja un ID de sesiune .Dacă nu există, atunci va crea unul.Dacă exista atunci încarcă variabilele sesiune înregistrate.
1.2 - o sesiune va fi pornită cậnd se incearcă înregistrarea unei variabile sesiune cu funcţia session_register()
1.3 - configurarea PHP - astfel încật să pornească automat o sesiune atunci cînd cineva intră pe site.Acest lucru se face prun opţiunea sesion.auto_start in fisierul php.ini

2. Înregistrarea variabilelor sesiune
-Începand cu versiunea 4.1 , variabilele sesiune sunt stocate în tabloul superglobal $_SESSION şi in $HTTP_SESSION_VARS .Pentru creare unei variabile sesiune se atribuie o valoare unui element In unul din aceste tablouri astfel :
$_SESSION['variabila'] = 5;
sau
$HTTP_SESSION_VARS['variabila'] = 5'

3. Utilizarea variabilelor sesiune

-Pentru a putea aduce o variabilă sesiune in domeniul de valabilitate astfel incật sa poată fi utilizată trebuie mai întậi pornită o sesiune .Apoi varaibila poate fi accesată prin tablourile $_SESSION sau $HTTP_SESSION_VARS .Cu funcţiile isset() sau empty() se verifică dacă s-au atribuit valori variabilelor sesiune.
Ex. If(isset($HTTP_SESSION_VARS['variabila'])) ...

4. Stergerea variabilelor sesiune şi distrugerea sesiunii

-ştergerea unei variabile sesiune se face cu funcţia unset astfel :
unset($HTTP_SESSION_VARS['variabila'));
-distrugerea sesiunii : session_destroy();