PHP SESSIONS O com curar-li l'Alzheimer a la nostra aplicació
PHP <ul><li>Fins ara, cada petició al nostre site era independent de les demés
Amb això podem fer una web informativa i poc més... No motiva massa oi?
Si volem compartir informació entre diferents peticions, hem de fer ús d'una eina molt important: les SESSIONS! </li></ul>
PHP <ul><li>Quan estem treballant en una sessió, PHP crea un altre array superglobal: $_SESSION
Tot el que desem a $_SESSION serà visible a la resta de pàgines que facin ús de la sessió
Cada sessió és única per cada usuari
Això significa que, per cada usuari, podrem recordar si està autenticat o no, quins productes ha afegit al carrito de la c...
Per defecte, el temps de vida de la sessió és fins que l'usuari tanqui el navegador </li></ul>
PHP <ul><li>Passos a seguir </li><ul><li>Posar nom a la sessió
Upcoming SlideShare
Loading in …5
×

Introducció a Sessions en PHP (cat)

473 views
424 views

Published on

Introducció al funcionament de les sessions en PHP

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
473
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introducció a Sessions en PHP (cat)

  1. 1. PHP SESSIONS O com curar-li l'Alzheimer a la nostra aplicació
  2. 2. PHP <ul><li>Fins ara, cada petició al nostre site era independent de les demés
  3. 3. Amb això podem fer una web informativa i poc més... No motiva massa oi?
  4. 4. Si volem compartir informació entre diferents peticions, hem de fer ús d'una eina molt important: les SESSIONS! </li></ul>
  5. 5. PHP <ul><li>Quan estem treballant en una sessió, PHP crea un altre array superglobal: $_SESSION
  6. 6. Tot el que desem a $_SESSION serà visible a la resta de pàgines que facin ús de la sessió
  7. 7. Cada sessió és única per cada usuari
  8. 8. Això significa que, per cada usuari, podrem recordar si està autenticat o no, quins productes ha afegit al carrito de la compra, …
  9. 9. Per defecte, el temps de vida de la sessió és fins que l'usuari tanqui el navegador </li></ul>
  10. 10. PHP <ul><li>Passos a seguir </li><ul><li>Posar nom a la sessió
  11. 11. Iniciar-la
  12. 12. Començar a usar-la! </li><ul><li>Desar valors
  13. 13. Llegir-los </li></ul></ul><li>Aquests passos s'han de fer a totes les pàgines que usin la sessió </li></ul><?php session_name('my_session'); session_start(); // mirem que hi ha a la sessió pre($_SESSION); // en una altra pàgina if (isset($_SESSION['user'])) { printf(&quot;L'usuari autenticat és %s&quot;, $_SESSION['user']); } else { echo &quot;Usuari anònim!&quot;; } if (login($user, $pass)) { $_SESSION['user'] = $user; }
  14. 14. PHP <ul><li>Com ens carreguem la sessió? </li><ul><li>Quan volguem fer logout, hem de destruir la sessió.
  15. 15. Per a fer-ho, encara que sembli extrany, primer hem d'iniciar la sessió </li><ul><li>Si no la iniciéssim, PHP no sabria quina sessió ha de destruir </li></ul><li>Esborrem les dades de la sessió
  16. 16. Opcionalment, podem eliminar la cookie de sessió de l'usuari també.
  17. 17. I finalment destruim la sessió amb una crida a session_destroy(). </li></ul></ul>
  18. 18. PHP <?php // exemple tret de http://php.net/session-destroy // Initialize the session. session_name(&quot;my_session&quot;); session_start(); // Unset all of the session variables. $_SESSION = array(); // If it's desired to kill the session, also delete the session cookie. // Note: This will destroy the session, and not just the session data! if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time() - 42000, '/'); } // Finally, destroy the session. session_destroy(); ?>
  19. 19. PHP <ul><li>Com funcionen les sessions? </li><ul><li>Les sessions es basen en cookies
  20. 20. Quan iniciem una sessió, el servidor li envia una cookie al client </li><ul><li>La cookie és una capçalera especial del protocol HTTP, el que signfica que per a poder enviar-la, el session_start() ha d'aparèixer abans que se li envii text al client, igual que passava amb el header('Location: blabla'); </li></ul><li>Al servidor es crea un fitxer per a aquesta sessió, on es desaran les dades que guardem a la sessió </li></ul></ul>
  21. 21. PHP <ul><li>Quan ja tenim la sessió iniciada... </li><ul><li>I un client sol·licita una pàgina, el client ens envia la cookie de sessió.
  22. 22. El session_start() comprova aquesta cookie i mira si existeix el fitxer de dades de la sessió per a aquest usuari i carrega les dades que hi havia desades en aquest fitxer a l'array $_SESSION
  23. 23. Cada cop que desem algo a $_SESSION, es desa en aquest fitxer de dades de la sessió automàticament.
  24. 24. I això es repeteix per a cada petició següent </li></ul></ul>
  25. 25. PHP <ul><li>Les cookies, a més de nom i valor, tenen altres paràmetres importants </li><ul><li>domini i path al qual el client enviarà la cookie </li><ul><li>Si tenim una cookie per domini www.pepe.com i path /foo, el client només enviarà aquesta cookie a pàgines dins de www.pepe.com/foo
  26. 26. És important establir aquests paràmetres a l'arrel de la nostra aplicació, per evitar, sobretot en entorns de hosting compartits, que un usuari nostre envii la cookie a altres persones. </li></ul><li>Temps d'expiració: un UNIX timestamp que indica el moment en què el client eliminarà la cookie </li></ul></ul>
  27. 27. PHP <ul><li>Funcions interessants </li><ul><li>session_id ( … )
  28. 28. session_set_cookie_params ( … ) </li><ul><li>http://php.net/session-set-cookie-params#78930 </li></ul><li>session_save_path ( … )
  29. 29. session_set_save_handler ( … )
  30. 30. setcookie ( … ) </li></ul></ul>

×