1 / 28

Lucrul cu “sesiuni” in PHP

Lucrul cu “sesiuni” in PHP. Modalități. Cum lucrează o sesiune ?. Fiecare utilizator primeste un identificator unic un s ession id . Ex: 26fe536a534d3c7cde4297abb45e275a. Cum lucrează o sesiune ?.

gur
Download Presentation

Lucrul cu “sesiuni” in PHP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lucrul cu “sesiuni” in PHP

  2. Modalități

  3. Cum lucrează o sesiune? • Fiecare utilizator primeste un identificator unic • un session id. Ex: 26fe536a534d3c7cde4297abb45e275a

  4. Cum lucrează o sesiune? • Acestsession ideste salvat într-un cookie sau trimis prin intermediul URL paginilor pe care userul le vizualizează. • Datele care se salvează (exuser, id, stare, etc.) is sunt stocate pe server într-o varoabilă PHP superglobală

  5. Pornirea unei sesiuni session_start(); PHP caută un sesion id valid în variabilele superglobale $_COOKIEsau$_GET Dacă nu găseste un nou session id este creat

  6. Pornirea unei sesiuni session_start(); Funcția trebuie apelată prima....

  7. Salvarea variabilelor de sesiune • Variabila superglobală$_SESSION(array asociativ) se va utiliza pentru a memora valori EX. $_SESSION[‘id’] = $id; $_SESSION[‘logat’] = $log;

  8. Citirea valorilor • Valorile se citesc din vectorul asociativ $_SESSION EX. $id =$_SESSION[‘id’]; $log = $_SESSION[‘logat’]

  9. Propagarea sesiunii • Id sesion trebuie să se propage în paginile pe care le vizitează utilizatorul • Se face în două moduriIt can do this in two ways: • Prin Cookie • Prin URL

  10. Propagarea cu ajutorul cookie-ului • Pe mașina utilizatorului se salvaeză în temporary internet folder un cookie care conține id-ul sesiunii (session id) • Se citeste de fiecare dată când se apelează funcțiasession_start();pentru inițializarea sesiunii. • Comportare standard: cookie-ul expiră când se închide browserul. Proprietățile coockie-ului pot fi modificate cu session_set_cookie_params

  11. Propagarea prin URL • Sesiunea (nr. ei) se trimite prin intermediul URL-ului (…baburiba/index.php?sid=26fe536a534d3c7cde4297abb45e275a) • PHP oferă o constantă globală pentru a trimite către orice link intern id-ul sesiunii:SID. Ex. <a href=“baburiba.php?<?=SID?>">Pagina baburib</a>

  12. Pe care s-o alegem..? • În cazul instalării default a PHP pe server se utilizează ambele metode. • se verifică mai întâi dacă userul are cookies enabled. • dacă sunt pe on atunci PHP utilizează pentru propagare cookie-urile. Altfel utilizează propagarea prin URL

  13. Distrugerea unei sesiuni De obicei nu e nevoie dar dacă vrem: // stergbem variabilele de sesiune $_SESSION = array(); // stergem cookie-ul care s-a folosit în salvarea sesiunii if (isset($_COOKIE[session_name()])) { setcookie(session_name(),'',time()-42000,'/'); } // distrugem sesiunea session_destroy(); // evitam reutilizare SID prin redirectarea // catre pagina care a generat sesiunea header('Location: '.$_SERVER['PHP_SELF']);

  14. Expirarea unei sesiuni • Default: sesiuni PHP expiră: • După o anumită perioadă de inactiviate (default 1440s), procesul de colectare a gunoiuluio propriu PHP-ului șerge variabilele de sesiune • Dacă s-a propagat prin cookie atunci se setează un cookie care se distruge când se închide browserul. • Dacă s-a propagat prin URL atunci session id se pierde când se părăseste situl.

  15. Session Hi-jacking • O problemă de securitate:dacă un utilizator rău reușește să obțină o sesiune activă care nu e a lui... Ex. • user 1 navighează cu cookies disabled (propagare prin URL). • user 1 se loghează. • user 1 trimite unui “prieten” un link interesant prin mail. User2 copiază URL si a obținut id-ul sesiunii user1 • user 2 înainte ca id-ul de sesiune să fie distrus fură astfel sesiunea user-ului 1 • user 2 este de acuma logat...!!

  16. … o povață … Dacă vă gândiți la securitate atunci trebuie să vă fie clar că sesiunile propagate prin URL pot fi compromise. Propagarea prin cookie este mai sigură dar ...

  17. Cookie (biscuit)

  18. Ce este un cookie? • Este un fisier text salvat pe calculatoarul utilizatorului. • Fiecare cookie este specific pentru un anumit domeniu. • Orice cookie foloseste până la 4kB de date. • Pentru un anumit domeniu se pot utiliza până la 20 de cookie-uri.

  19. Cum funcționează? • Pas1: Utilizatorul face o cerere către www.baburiba.ro Cererea paginii

  20. Pas 2: Vine un răspuns de la www.baburiba.ro în format html și totodată se trimite si cookie-ul care conține date xhtml cookie data

  21. Pas 3: La orice cerere a utilizatorului către domeniul www.baburiba.ro se trimite automat si cookie-ul salvat pe calculatorul utilizatorului asociat acestui domeniu. page request cookie data

  22. Setarea unui cookie setcookie(name [,value [,expire [,path [,domain [,secure]]]]]) name = cookie name value = data to store (string) expire = UNIX timestamp when the cookie expires. Default is that cookie expires when browser is closed. path = Path on the server within and below which the cookie is available on. domain = Domain at which the cookie is available for. secure = If cookie should be sent over HTTPS connection only. Default false.

  23. Exemplu setcookie(‘nume’,’Baburiba’) se va seta un cookie numit nume având valoarea Baburiba. Va fi disponibil pentru toate paginile din directorul curent sau subdirectoare ale paginii care l-a setat. Expiră când se va închide browserul.

  24. Exemplu 2 • setcookie(‘nota’,’10’,time()+60*60*24*30) se va seta un cookie numit nota având valoarea 10. Va fi disponibil pentru toate paginile din directorul curent sau subdirectoare ale paginii care l-a setat. Expiră peste 2592000 de secunde

  25. Citirea datelor dintr-un cookie • Toate valorile sunt salvate în variabial superglobală $_COOKIE: $variable = $_COOKIE[‘cookie_name’] sau $variable = $HTTP_COOKIE_VARS[‘cookie_name’]; Ex: $nume = $_COOKIE[‘nume’];

  26. Stergerea unui cookie • Pentru a șterge un cookie se suprascrie acel cookie cu ceva care expiră în trecut .... setcookie(‘cookie_name’,’’,time()-86400) • În principiu orice număr poate fi folosit pentru a se scade din valoarea returnată de time()dar având în vedere că timpul local diferă de pe un calculator pe altul... mai bine scădem o zi sau două

  27. Important • Deoarece setarea unui cookie implică trimiterea header-ului trebuie neapărat să fie scris pe prima linie a codului php corect gresit

  28. To be continued • Să ne uităm la firefox mai atent....

More Related