Introducció a Sessions en PHP (cat)

  • 353 views
Uploaded on

Introducció al funcionament de les sessions en PHP

Introducció al funcionament de les sessions en PHP

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
353
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
5
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. PHP SESSIONS O com curar-li l'Alzheimer a la nostra aplicació
  • 2. PHP
    • Fins ara, cada petició al nostre site era independent de les demés
    • 3. Amb això podem fer una web informativa i poc més... No motiva massa oi?
    • 4. Si volem compartir informació entre diferents peticions, hem de fer ús d'una eina molt important: les SESSIONS!
  • 5. PHP
    • Quan estem treballant en una sessió, PHP crea un altre array superglobal: $_SESSION
    • 6. Tot el que desem a $_SESSION serà visible a la resta de pàgines que facin ús de la sessió
    • 7. Cada sessió és única per cada usuari
    • 8. Això significa que, per cada usuari, podrem recordar si està autenticat o no, quins productes ha afegit al carrito de la compra, …
    • 9. Per defecte, el temps de vida de la sessió és fins que l'usuari tanqui el navegador
  • 10. PHP
    • Passos a seguir
      • Posar nom a la sessió
      • 11. Iniciar-la
      • 12. Començar a usar-la!
        • Desar valors
        • 13. Llegir-los
    • Aquests passos s'han de fer a totes les pàgines que usin la sessió
    <?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. PHP
    • Com ens carreguem la sessió?
      • Quan volguem fer logout, hem de destruir la sessió.
      • 15. Per a fer-ho, encara que sembli extrany, primer hem d'iniciar la sessió
        • Si no la iniciéssim, PHP no sabria quina sessió ha de destruir
      • Esborrem les dades de la sessió
      • 16. Opcionalment, podem eliminar la cookie de sessió de l'usuari també.
      • 17. I finalment destruim la sessió amb una crida a session_destroy().
  • 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. PHP
    • Com funcionen les sessions?
      • Les sessions es basen en cookies
      • 20. Quan iniciem una sessió, el servidor li envia una cookie al client
        • 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');
      • Al servidor es crea un fitxer per a aquesta sessió, on es desaran les dades que guardem a la sessió
  • 21. PHP
    • Quan ja tenim la sessió iniciada...
      • I un client sol·licita una pàgina, el client ens envia la cookie de sessió.
      • 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. Cada cop que desem algo a $_SESSION, es desa en aquest fitxer de dades de la sessió automàticament.
      • 24. I això es repeteix per a cada petició següent
  • 25. PHP
    • Les cookies, a més de nom i valor, tenen altres paràmetres importants
      • domini i path al qual el client enviarà la cookie
        • 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. É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.
      • Temps d'expiració: un UNIX timestamp que indica el moment en què el client eliminarà la cookie
  • 27. PHP
    • Funcions interessants
      • session_id ( … )
      • 28. session_set_cookie_params ( … )
        • http://php.net/session-set-cookie-params#78930
      • session_save_path ( … )
      • 29. session_set_save_handler ( … )
      • 30. setcookie ( … )