En aquest tema, aprendrem sobre les sessions i les cookies en PHP, dues eines fonamentals per mantenir l'estat d'un usuari en una aplicació web. Les sessions i les cookies permeten emmagatzemar informació entre diferents peticions HTTP, cosa que és essencial per a la majoria de les aplicacions web modernes.
Què són les Sessions?
Una sessió és una manera de mantenir informació sobre un usuari durant diverses interaccions amb una aplicació web. Les dades de la sessió es guarden al servidor i es poden accedir mitjançant un identificador de sessió únic.
Iniciant una Sessió
Per iniciar una sessió en PHP, utilitzem la funció session_start()
. Aquesta funció ha de ser cridada al començament del script, abans de qualsevol sortida HTML.
<?php // Iniciar la sessió session_start(); // Establir una variable de sessió $_SESSION['username'] = 'JohnDoe'; echo 'Sessió iniciada i variable de sessió establerta.'; ?>
Accedint a les Dades de la Sessió
Un cop iniciada la sessió, podem accedir a les dades de la sessió en qualsevol pàgina del nostre lloc web.
<?php session_start(); if (isset($_SESSION['username'])) { echo 'Usuari: ' . $_SESSION['username']; } else { echo 'No hi ha cap usuari iniciat.'; } ?>
Destruint una Sessió
Per destruir una sessió i eliminar totes les dades associades, utilitzem session_destroy()
.
<?php session_start(); // Destruir totes les dades de la sessió session_destroy(); echo 'Sessió destruïda.'; ?>
Què són les Cookies?
Les cookies són petits fitxers de text que es guarden al navegador de l'usuari. Es poden utilitzar per emmagatzemar informació que es necessita entre diferents peticions HTTP.
Creant una Cookie
Per crear una cookie en PHP, utilitzem la funció setcookie()
. Aquesta funció ha de ser cridada abans de qualsevol sortida HTML.
<?php // Crear una cookie que expira en 1 hora setcookie('user', 'JohnDoe', time() + 3600); echo 'Cookie creada.'; ?>
Accedint a les Cookies
Podem accedir a les cookies utilitzant la superglobal $_COOKIE
.
<?php if (isset($_COOKIE['user'])) { echo 'Usuari: ' . $_COOKIE['user']; } else { echo 'No hi ha cap cookie establerta.'; } ?>
Eliminant una Cookie
Per eliminar una cookie, establim la seva data d'expiració en el passat.
Comparació entre Sessions i Cookies
Característica | Sessions | Cookies |
---|---|---|
Emmagatzematge | Al servidor | Al navegador de l'usuari |
Seguretat | Més segura (dades no visibles per l'usuari) | Menys segura (dades visibles per l'usuari) |
Capacitat | Limitada només per la memòria del servidor | Limitada a 4KB per cookie |
Durada | Fins que es tanca el navegador o es destrueix | Fins que expira o es elimina |
Exercicis Pràctics
Exercici 1: Creació i Accés a una Sessió
- Crea un script PHP que iniciï una sessió i estableixi una variable de sessió anomenada
user_id
amb el valor12345
. - Crea un altre script PHP que accedeixi a la variable de sessió
user_id
i mostri el seu valor.
Solució:
Script 1:
<?php session_start(); $_SESSION['user_id'] = 12345; echo 'Variable de sessió user_id establerta.'; ?>
Script 2:
<?php session_start(); if (isset($_SESSION['user_id'])) { echo 'User ID: ' . $_SESSION['user_id']; } else { echo 'No hi ha cap variable de sessió user_id establerta.'; } ?>
Exercici 2: Creació i Accés a una Cookie
- Crea un script PHP que estableixi una cookie anomenada
user_email
amb el valor[email protected]
que expiri en 2 hores. - Crea un altre script PHP que accedeixi a la cookie
user_email
i mostri el seu valor.
Solució:
Script 1:
<?php setcookie('user_email', '[email protected]', time() + 7200); echo 'Cookie user_email establerta.'; ?>
Script 2:
<?php if (isset($_COOKIE['user_email'])) { echo 'User Email: ' . $_COOKIE['user_email']; } else { echo 'No hi ha cap cookie user_email establerta.'; } ?>
Errors Comuns i Consells
- Error: "Headers already sent": Aquest error es produeix quan es crida
session_start()
osetcookie()
després d'haver enviat sortida HTML. Assegura't de cridar aquestes funcions abans de qualsevol sortida. - Seguretat de les Cookies: No emmagatzemis informació sensible en cookies, ja que són accessibles per l'usuari.
- Sessió Caducada: Recorda que les sessions caduquen quan es tanca el navegador o després d'un període d'inactivitat. Considera utilitzar cookies per a informació que necessiti persistir més temps.
Conclusió
Les sessions i les cookies són eines essencials per mantenir l'estat d'un usuari en una aplicació web. Les sessions són més segures i emmagatzemen dades al servidor, mentre que les cookies són útils per emmagatzemar informació al navegador de l'usuari. Ambdós mecanismes tenen els seus propis avantatges i inconvenients, i és important saber quan utilitzar cadascun.
Curs de Programació PHP
Mòdul 1: Introducció a PHP
- Què és PHP?
- Configuració de l'Entorn de Desenvolupament
- El teu Primer Script PHP
- Sintaxi i Variables de PHP
- Tipus de Dades en PHP
Mòdul 2: Estructures de Control
Mòdul 3: Funcions
- Definició i Crida de Funcions
- Paràmetres de Funció i Valors de Retorn
- Àmbit de Variables
- Funcions Anònimes i Closures
Mòdul 4: Arrays
Mòdul 5: Treballant amb Formularis
Mòdul 6: Treballant amb Fitxers
- Lectura i Escriptura de Fitxers
- Funcions de Gestió de Fitxers
- Permisos de Fitxers
- Funcions de Directori
Mòdul 7: Programació Orientada a Objectes (OOP)
- Introducció a OOP
- Classes i Objectes
- Propietats i Mètodes
- Herència
- Interfícies i Classes Abstractes
- Traits
Mòdul 8: Treballant amb Bases de Dades
- Introducció a les Bases de Dades
- Connexió a una Base de Dades MySQL
- Realització d'Operacions CRUD
- Ús de PDO per a la Interacció amb Bases de Dades
- Seguretat en Bases de Dades
Mòdul 9: Tècniques Avançades de PHP
- Gestió d'Errors i Excepcions
- Sessions i Cookies
- Expressions Regulars
- Treballant amb JSON i XML
- PHP i Serveis Web
Mòdul 10: Frameworks PHP i Millors Pràctiques
- Introducció als Frameworks PHP
- Començant amb Laravel
- Arquitectura MVC
- Millors Pràctiques en Desenvolupament PHP
- Proves i Depuració