Php
Sesiuni in PHPSesiuni in PHP 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: o variabile globale o sesiuni o cookies o transferul variabilelor locale prin forme sau in header-ul unei alte pagini A. Sesiuni 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 session_start(); Sintaxa functiei este: bool session_start ( void ) Functia returneazatot timpul valoarea TRUE si nu are nici un paramentru lucru specificat prin „void”. 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. Sintaxa functiei este urmatoarea: bool session_register ( mixed $name [, mixed $ ] ) Variabila $name poate fi o variabila simpla sau un tablou (array). 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 transferarea variabilele de la pagina la pagina. In php.ini pot fi setate diferite valori pentru parametri legati de sesiune cum ar fi : session.cookie_path = '/'; session.cookie_domain = ''; session.cookie_lifetime = '0'; // valoarea 0 inseamna ca cookie pentru sesiune e valabil pana cand browserul se va inchide. session.name = 'PHPSESSID'; 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. B. Utilizarea variabilelor cookie Variabilele cookie sunt utile pentru stocarea preferintelor utilizatorilor si a altor informatii care trebuie retinute atunci cand utilizatorul trece la o noua pagina web. Valorile majoritatii variabilelor dispar atunci cand scriptul PHP care le contine isi incheie executia. Spre deosebire de acestea, valorile variabilelor cookie se pot pastra un timp indefinit. Browserul utilizatorului stocheaza variabilele cookie in unitatea de hard-disk locala a utilizatorului.
Cand utilizatorul revine la pagina vizitata, variabilele cookie permit browserului sa recunoasca utilizatorul si sa restaureze optiunile selectate de utilizator. Din pacate, variabilele cookie nu constituie solutia perfecta pentru un mediu de stocare pe termen lung si prezinta o serie de dezavantaje cum ar fi: - Un utilizator poate dezactiva variabilele cookie prin stabilirea unei optiuni a browserului. - In anumite situatii, variabilele cookie pot fi vizualizate de alti utilizatori. - Un site poate stoca numai 20 de variabile cookie si numai 4 KB de informatii in unitatea de hdd locala a utilizatorului. - Numeroase versiuni ale browserelor frecvent folosite au erori care le impiedica sa foloseasca variabilele cookie in mod adecvat. In ciuda acestor dezavantaje, variabilele cookie raman cea mai populara tehnica pentru obtinerea unui mediu de stocare pe termen lung. C. Crearea unei variabile cookie Pentru a crea o variabila cookie, trebuie invocata functia setcookie(). Sintaxa: bool setcookie ( string $nume [, string $valoare [, int $expirare]] ) Argumentul nume specifica numele variabilei cookie, iar argumentul valoare specifica valoarea variabilei. Argumentul expirare indica momentul expirarii variabilei cookie; dupa ora specificata, variabila cookie nu mai este accesibila. In general, este convenabil sa se specifice momentul expirarii folosind functia time(), care returneaza intervalul de timp (exprimat in secunde) scurs de la 1 ianuarie 1970. Functia returneaza TRUE in cazul in care a rulat corespunzator si FALSE in caz contrar. D. Stergerea unei variabile cookie Deoarece o variabila cookie are o data de expirare, aceasta va fi stearsa automat la un oarecare interval de timp dupa crearea sa. Totusi se poate sterge o variabila cookie imediat. Pentru aceasta, se fixeaza momentul expirarii variabilei cookie la un moment de timp din trecut. setcookie('cookie', ‘’’’, time()- 3600); Aceasta instructiune stabileste timpul de expirare cu o ora (3600 de secunde) in urma. Valoarea variabilei cookie este exprimata sub forma unui sir vid; din moment ce variabila cookie nu va mai fi disponibila, valoarea sa nu mai are importanta. E. Accesul la o variabila cookie Pentru a regasi o valoare stocata intr-un modul cookie trebuie sa se refere tabloul superglobal $_COOKIES , folosind pentru cheie numele modulului coookie. De exemplu, pentru a obtine valoarea unui modul cookie instalat cu instructiunea setcookie(‘nume’,’Popescu’); se va folosi $_cookie[‘nume’]; . F. Sesiuni si module cookie Sesiunile au urmatoarele avantaje fata de modulele cookie: o In general sunt mai sigure deoarece datele sunt pastrate pe sever; o Permit stocarea unei cantitati mai mari de date; o Pot fi folosite fara module cookie; Modulele cookie au urmatoarele avantaje fata de sesiuni: o Sunt mai usor de programat; o Solicita serverul intr-o masura mai mica; in general pentru stocarea si gasirea unui volum mic de informatii, se folosesc module cookie, dar pentru majoritatea aplicatiilor web se folosesc sesiuni. G. Utilizarea bufferelor de iesire O caracteristica interesanta a limbajului PHP este controlul iesirii. Controlul iesirii sau utilizarea bufferelor de iesire , permit scripturilor sa fie scrise si executate in mod normal, dar datele sunt trimise catre browserul Web numai in anumite puncte selectate. Principalul avantaj al acestui sistem este acela ca se pot apela functiile header(), setcookie(), si session_start() in aproape orice punct din script, fara a avea probleme privind mesajele de eroare de tip „headers already sent”(anteturile au fost deja trimise). Pentru a incepe lucrul cu bufferele de iesire se utilizeaza functia ob_start(). Dupa ce se apeleaza aceasta functie, orice functie echo(), print() sau alta similara va trimite datele catre un buffer de memorie si nu catre browserul web. Apelurile HTTP (cum ar fi header() si set cookie()) nu vor fi prelucrate prin buffere si vor functiona in mod uzual. In finalul scriptului se apeleaza functia ob_end_flush() pentru a trimite bufferul cumulat catre browserul web. O alta posibilitate este utilizarea functiei ob_end_clean() pentru a sterge datele stocate in buffer fara a le transmite. Ambele functii au efectul secundar de anulare a bufferelor de iesire. Bufferele de iesire permit structurarea unui script intr-un format liniar fara a fi preocupat de anteturile HTTP.
|