Introducció a Sessions en PHP (cat)
Upcoming SlideShare
Loading in...5
×
 

Introducció a Sessions en PHP (cat)

on

  • 526 views

Introducció al funcionament de les sessions en PHP

Introducció al funcionament de les sessions en PHP

Statistics

Views

Total Views
526
Views on SlideShare
526
Embed Views
0

Actions

Likes
0
Downloads
5
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Introducció a Sessions en PHP (cat) Introducció a Sessions en PHP (cat) Presentation Transcript

  • PHP SESSIONS O com curar-li l'Alzheimer a la nostra aplicació
  • PHP
    • 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!
  • PHP
    • 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 compra, …
    • Per defecte, el temps de vida de la sessió és fins que l'usuari tanqui el navegador
  • PHP
    • Passos a seguir
      • Posar nom a la sessió
      • Iniciar-la
      • Començar a usar-la!
        • Desar valors
        • 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; }
  • PHP
    • Com ens carreguem la sessió?
      • Quan volguem fer logout, hem de destruir la sessió.
      • 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ó
      • Opcionalment, podem eliminar la cookie de sessió de l'usuari també.
      • I finalment destruim la sessió amb una crida a session_destroy().
  • 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(); ?>
  • PHP
    • Com funcionen les sessions?
      • Les sessions es basen en cookies
      • 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ó
  • PHP
    • Quan ja tenim la sessió iniciada...
      • I un client sol·licita una pàgina, el client ens envia la cookie de sessió.
      • 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
      • Cada cop que desem algo a $_SESSION, es desa en aquest fitxer de dades de la sessió automàticament.
      • I això es repeteix per a cada petició següent
  • 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
        • É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
  • PHP
    • Funcions interessants
      • session_id ( … )
      • session_set_cookie_params ( … )
        • http://php.net/session-set-cookie-params#78930
      • session_save_path ( … )
      • session_set_save_handler ( … )
      • setcookie ( … )