Sesiuni in PHP de Curs http://php.intercer.net
| | Curs http://php.intercer.net |
|
In mod normal,
o variabila locala declarata intr-o pagina .php este valabila doar in acea
pagina, daca nu intervenim intr-un fel pentru a o transfera si pe alte pagini
unde avem nevoie de ea.
Modalitatile de
pastrare a informatiilor pe tot parcursul aplicatiei sunt:
-
variabile globale
-
sesiuni
-
cookies
-
transferul variabilelor locale prin forme sau in header-ul unei alte pagini
Ce este o
sesiune?
O sesiune
reprezinta una din caile de a pastra datele de lucru ale unei aplicatii atunci
cand se face transferul de la o pagina la alta.
PHP foloseste
in mod nativ sesiuni, asa cum fac si limbajele ASP si ColdFusion. Lucrul cu
sesiuni nu este complicat.
Fiecare sesiune
trebuie declarata la inceputul paginii, cu ajutorul functiei:
start_session();
Aceasta functie
face ca PHP sa inregistreze un identificator unic al sesiunii (ID), iar acel
identificator este trimis utilizatorului printr-un cookie. Totodata, pe server
se creaza un fisier care va retine valorile variabilelor folosite in aceasta
sesiune. Fisierul are numele la fel cu identificatorul ID al sesiunii.
Apoi trebuie
declarata variabila (sau variabilele) cu care lucram in cadrul acestei sesiuni.
Pot fi create oricate variabile.
session_register('sesiunea_mea');
Variabila $sesiunea_mea
poate fi o variabila simpla sau un tablou (array).
Exemplu:
$sesiunea_mea =
“Lucian”; // variabila simpla
sau
$sesiunea_mea[“id”]
= 1; // cazul unui array
$sesiunea_mea[“nume_utilizator”]
= “Lucian”;
$sesiunea_mea[“adresa”]
= “Str.Florilor nr.14”; // etc.
Variabilele
definite in acest mod pot fi folosite pe toate paginile unei aplicatii, definite
pe un domeniu dat, atat timp cat cookie alocat acelei sesiuni este activ (nu
expira). Folosirea sesiunilor este o cale mult mai usoara de lucru decat sa
transferam variabilele de la pagina la pagina.
In php.ini pot
fi setate diferite valori pentru parametri legati de sesiune cum ar fi (dupa
semnul egal am pus valorile implicite) :
session.cookie_path = “/”;
session.cookie_domain = “”;
session.cookie_lifetime = “0”;
// valoarea 0 inseamna ca cookie pentru sesiune e valabila pana cand browserul
se va inchide.
session.name = “PHPSESSID”;
si altele .
Exista
posibilitatea ca un utilizator sa nu accepte setarea de cookies pe computerul
sau. In acest caz, pentru identificarea unei sesiuni se poate folosi
identificatorul acesteia.
Putem adauga acest
identificator in stringul care apleaza o pagina:
<a href = “pagina_mea.php?<?=SID?”>Click
catre pagina mea</a>
<?= este un mod
mai scurt de a scrie comanda echo. <?= se poate folosi cu orice variabila, nu
doar cu sesiuni.
Un
identificator PHPSESSID arata ca o insirurire aleatoare de caractere
alfanumerice:
PHPSESSID =
02993ab99sac988da9753330af72201
Daca PHP este
compilat cu optiunea enable-trans-id, atunci identificatorul sesiunii este
adaugat automat la fiecare pagina.
Iata un exemplu
de definire al unei sesiuni:
<?
session_start();
session_register(“variabila_mea”);
$variabila_mea
= “Aceasta este cursul online de PHP”;
?>
$variabila_mea
va putea fi folosita apoi pe toate paginile aplicatiei respective.
Observatie
importanta:
Variabilele
definite in sesiuni pot fi folosite intr-o pagina doar dupa ce a fost executata
comada session_start();
Aceasta comanda
ii spune PHP-ului sa verifice daca exista o sesiune si atunci sa foloseasca
variabilele acelei sesiuni ca variabile globale.
Functiile
session_start(), ca si setcookie() trebuie folosite intotdeauna chiar la
inceputul fisierului. Daca se trimite altceva catre browser inainte de
folosirea lor atunci vor exista erori la folosirea sesiunii sau a cookie-urilor.
Sus |