Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Manipularea sesiunilor in PHP4

php


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.
Prin sesiuni veti putea observa actiunile unui anumit user pe durata vizitei sale pe site-ul dvs.

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
    - Cum sa folosim variabile persistente
    - Cum numarul de identificare al sesiunilor ( sessionID ) este transmis de la o pagina la alta
    - Cum sa sfirsim o sesiune si sa executam initializarea datelor.
    - Cum sa folosim functiile de managementul sesiunilor din PHP4, incluzind aici:
        o sess 19319f59t ion_register()
        o sess 19319f59t ion_start()
        o sess 19319f59t ion_destroy()
        o gc_probability()
        o gc_maxlifetime
        o serialize()
        o deserialize()
        o sess 19319f59t ion_save_path()
    - Cum stocheaza PHP-ul datele despre 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.
"Viata" unei sesiuni se refera la timpul fizic in care o sesiune este activa. "Serializarea" inseamna transformarea variablilelor intr-o forma binara de reprezentare ca poate fi inmagazinata oriunde ca un string obisnuit. Fara posibilitatea  serializarii nu ar fi posibil, spre exemplu, stocarea vectorilor PHP in baze de date. Datele pot serializate prin functia serialize() sau deserializate prin deserialize(). In PHP3 insa, aceste functii nu lucreaza corect cu obiecte.

Informatii de baza

Managementul sesiunilor in PHP 4 are citeva caracteristici cerute de o librarie de control al sesiunilor:
    o Stocheaza date pe server. Deoarece libraria foloseste diferite module de stocare, puteti tine informatiile in fisiere text, memorie sau baze de date.
    o Foloseste o funtie criptografica aleatoare pentru a acrea un sessionID in scopul identificarii unice a unui utilizator.
    o Salveaza sessionID-ul ( si numai acesta ! ), pe calculatorul client, folosind cookie-uri, GET/POST sau direct prin script ( Location ).
    o Daca utilizatorul dezactiveaza cookie-urile, aplicatia dvs. va folosi alte metode pentru a propaga sesiunea.

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:
    o PHP-ul verifica daca exista un sessionID valid.
    o Daca nu exista unul, PHP va crea un sessionID
    o Daca exista un ID valid, variabilele respectivei sesiuni sint reactivate si reintroduse in cimpul global al variabilelor.

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.
    o Initializarea unei sesiuni
    o Afisarea celei mai recente valori a contorului
    o Incrementarea contorului
    o Inregistrarea contorului

session_start();
print($counter);
$counter++;
session_register("counter");

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.
Exemplu : Inregistrarea variabilei $text

Session_register("text");

Exemplu : Inregistrarea unei variabile definite mai devreme
$var_text = "Acesta este un string";
$string = "var_text";
session_register($string);

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.
Este la fel de usor de manipulat variabile sesiune ca si variabile tip GET/POST.

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.
    · Puteti forta terminarea unei sesiuni prin session_destroy().
    · Daca propagati sessiunID prin cookie-uri, durata de viata standard a unui cookie este 0, ceea ce inseamna ca sesiunea se va termina de indata de fereastra beowserului se inchide. Puteti influenta durata de viata a cookie-ului prin configurarea duratei de viata.
    · Puteti utiliza directiva de configurarea gc_maxlifetime pentru a determina la ce perioada de timp dupa ultimul acces, o sesiune sa fie distrusa. Acest procedeu este utilizat deoarece serverul nu stie daca cookie-ul mai exista sau nu de partea client. Totusi, utilizind acest procedeu pentru a "curata" sesiuni vechi pentu fiecare pagina ceruta poate cauza o incarcare foarte mare. De aceea, impreuna cu gc_maxlifetime trebuie utilizat si gc_probability. Acesta specifica cu ce probabilitate rutina de "curatare" a sesiunilor trebuie invocata. Daca gc_probability este de 100, atunci rutina va apelata la fiecare cerere de pagina.

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:
    · fisiere. In mod standard, PHP-ul foloseste acest modul pentru a salva datele unei sesiuni pe disc. Creaza un fisier text, numit dupa sessionID, in directorul /tmp. In cazul unui  contor, continutul acestui fisier ar putea fi dat de reprezentarea serializata a uneu variabile: contor|i:4;
    · mm. Daca aveti nevoie de inalta performanta, modulul mm ofera o alternativa viabila; stocheza datele in memorie.
    · user. Folosit intern pentru a realiza functii tip callback pe care le puteti defini cu session_set_save_handler().

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.
Functia session_set_save_handler() are sase argumente, ce trebuie sa fie functiile callback. Sintaxa functiei este urmatoarea:

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 ("").
Functiile sint definite dupa cum urmeaza:
bool open ( string save_path, string sess_name);
Aceasta functie este executata la initializarea unei sesiuni; Are doua string-uri drept parametrii. Primul este calea unde trebuie sa fie salvate sesiunile. Aceasta variabila poate sa fie setata si in php.ini , sau prin session_set_path(). Al doilea este numele sesiunii, standard este PHPSESSID. Returneaza adevarat in caz de suuces sau fals in caz de eroare.
bool close ();
Aceasta functie este executata la inchiderea unei sesiuni. Utilizati-o pentru a elibera memoria sau pentru a distruge o variabila.
mixed read ( string sess_id) ;
Aceasta functie importanta este chemata de fiecare data cind o sesiune este pornita. Trebuie sa citeasca datele unei sesiuni identificata prin sess_id si sa le intoarca serializate. Daca nu exista o sesiune cu ID-ul respective, un string gol "", va fi returnat.
bool write (string sess_id , string value );
Cind o sesiune trebuie salvata, aceasta functie este executata. Primul argument este dat de ID-ul sesiunii, al doilea este reprezentarea serializata a variabilelor.
bool destroy ( string sess_id );
Cind functia session_destroy() este apelata aceasta functie este executata. Ea distruge toate informatiile associate sesiunii cu sess_id-ul respectiv.
bool gc ( int max_lifetime );
Aceasta functie este apelata la pornirea unei sesiuni cu probabilitatea specificata in gc_probability. Este folosita in curatarea sesiunilor, respectiv pentru a sterge sesiuni ce nu au mai fost actualizate pentru mai mult de gc_maxlifetime secunde.

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_open($save_path, $sess_name)

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():
session_set_save_handler ("sess_open","","sess_read","sess_read","sess_write","sess_destroy","sess_gc");

Propagarea ID-ului sesiunii

PHP 4 suporta urmatoarele metode de propagare a session ID-ului:
    · Cookie-uri ( standard )
    · GET/POST
    · Ascuns in URL, manual sau automat prin transmiterea URL-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 constanta globala SID:
printf('<a href="script.php?%s">Link</a>', SID);

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.

Cam asta a fost pentru inceput..Succes !
Acesta este doar un prim tutorial despre sesiuni. In principiu o sa fie mai fie cel putin unul daca vreti


Document Info


Accesari: 989
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )