ALTE DOCUMENTE
|
||||||
Manipularea sesiunilor in PHP4 |
Introducere Spre deosebire de PHP3, PHP4 are posibilitatea de a controla
managementul sesiunilor intern, fara alte biblioteci externe. Managementul
sesiunilor din PHP 4 este simplu de folosit, puternic si deschis pentru alte
adaptari. Pentru a asocia informatiile sesiunii cu un anumit user, aveti nevoie de un numar de identificare a sesiunii. Adica de o cheie ce il asociaza pe un anumit utilizator de informatiile sale. Acest tutorial discuta cum se deschid sesiunile, cum urmarim informatiile un cursul unei sesiuni si cum sa stergem sesiunile. Cum ziceam mai devreme, PHP 4 are un puternic management intern al librariilor. Totusi, pentru un mai mare control si o mai mare complexitate, e recomandabil sa folositi PHPLib ( un pachet pentru PHP3, dar merge si pentru PHP4 ). Scopurile tutorialului In acest tutorial vom invata urmatoarele: - Ce
este o sesiune Termeni de baza Managementul sesiunilor
este un mecanism de a mentine informatii despre cererile unui utilizator de-a
lungul unei perioade de timp. Termenul "sesiune" se refera la perioada de
timp pe care un utilizator o petrece pe un anumit web site. Problema este ca
protocolul HTTP nu are nici un mecanism pentru a mentine aceasta perioada. De
asmenea, server-ul web nu stie nimic despre sesiuni. Managementul
sesiunuilor se refera la modalitatea prin care informatii sint associate unui
utilizator pe durata vizitei sale pe o anumita pagina Web. Spre exemplu, un
magazin on-line tipic va folosi sesiuni pentru inregistrarea utilizatorilor (
login ), pentru a adauga bunuri in cosul de cumparare, pentru a introduce
informatii cum ar fi credit card-ul sau adresa la check-out, si pentru
inchiderea ferestrei browserului. Informatii de baza Managementul sesiunilor
in PHP 4 are citeva caracteristici cerute de o librarie de control al
sesiunilor: Initializarea unei sesiuni O sesiune se porneste
explicit in PHP4 prin session_start() sau implicit inregistrind o
variabila pentru sesiune utilizind session_register(). De obicei se
cheama session_start() la inceputul paginii, pentru ca variabilele
sesiune sa fie disponibile scriptului dvs., si de abia dupa aceea veti
inregistra variabilele. Insa puteti si sa inregistrati variabilele sesiune
prin session_register() la inceputul scriptului si sa omiteti cu totul
session_start(). Functia session_register() apeleaza intern session_start()
in caz ca sesiunea nu este pornita. Cind o sesiune este initializata, oricare
ar fi varianta aleasa, se intimpla urmatoarele: Inregistrarea unei variabile sesiune se face prin comanda session_register(). Aceasta permite crearea ( inregistrarea ) unei variabile ce este pastrata pe intreaga durata a sesiunii. Orice variabila pe care vreti sa o pastrati de-a lungul unei sesiuni trebuie neaparat inregistrata prin session-register(). Aceasta functie ia ca argument numele unei variabile si nu variabila insasi. Puteti folosi session_unregister() pentru a sterge o variabila din cadrul sesiunii, spre exemplu cind un utilizator scoate un produs din cosul de cumparaturi. Exemplu de sintaxa :
Acesta este un exemplu de contor. session_start(); Bine inteles, acest
exemplu difera de un contor normal: sesiunea ( si implicit contorul ) sint
legate de un anumit utilizator. Prin configurarea standard a PHP-ului, durata
de viata a unui cookie este 0; asta inseamna ca daca inchideti browser-ul si
il redeschideti, contorul se va reseta, deoarece cookie-ul a fost sters. Session_register("text"); Exemplu : Inregistrarea
unei variabile definite mai devreme Diferenta dintre cele
doua exemple consta in faptul ca in prima, o variabila numita "text" este
inregistrata ca o variabila sesiune, in timp ce in al doilea exemplu o alta
variabila numita "var_text". Aceste exemple arata ca session_register() preia
numele unei variabile ca argument si nu variabila insasi. Terminarea unei sesiuni Sfirsitul unei sesiuni nu
este automatic, deoarece este dificil pentru system sa realizeze cind un user
a terminat o sesiune. Exista citeva comenzi care va ajuta sa controlati modul
in care sistemul termina o sesiune pentru un utilizator. Daca nu folositi cookie-uri, ci transmiteti sessionID prin GET/POST, atunci trebuie sa aveti mare atentie la rutinele de "curatare". Utilizatorii ar putea salva bookmark-uri ce contin sessionID, de aceea este important ca rutina de curatare sa fie apelata destul de des. Modalitati de stocare Pentru a citi si salva
datele sesiunii, PHP-ul foloseste module de stocare. Curent, sint 3 module de
stocare: Adevarata putere este
data de capacitatea unu utilizator de a defini functi callback ca module de
stocare. Deoarece puteti scrie propriile functii care sa manipuleze datele
unei sesiuni, puteti stoca sesiuni oriunde: in baze de date cum ar fi MySQL,
in fisiere XML, sau chiar si pe un server FTP. Void session_set_save_handler(string open, string close, string reads, string write, string destroy, string gc); Pentru a omite un
argument, trasnmiteti functiei un string gol (""). Daca vreti sa folositi
propriile module de stocare, spre exemplu intr-o baza de date MySQL, trebuie
sa creati implementari PHP ale acestor functii. Prototipurile vor arata
astfel: function sess_read($sess_id) function sess_write($sess_id, $val) function sess_destroy($sess_id) function sess_gc($max_lifetime) Pentru a inregistra
aceste functii, veti folosi session_set_save_handler(): Propagarea ID-ului sesiunii PHP 4 suporta urmatoarele
metode de propagare a session ID-ului: Cookie-urile reprezinta
calea cea mai simpla de a propaga ID-ul unei sesiuni. Alta cale este de a
transmite ID-ul prin GET/POST. In acest caz, url-ul dvs va fi spre exemplu
script.php?=. Puteti crea asemenea URL-uri utilizind Redirectarea automata a URL-ului este o facilitate importanta a PHP-ului, permitindu-ne sa adaugam session ID-ul sa toate link-urile de pe o pagina. Pentru a activa aceasta facilitate trebuie sa configurati PHP cu -enable-trans-id si sa-l recompilati. In acest caz, session_ID va fi adaugat automat la toate linkurile relative de pe pagina. In conluzie, cookie-urile sint cele mai folosite si cele ce incarca cel mai putin serverul.
|
|