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.

<?php
// Eliminar la cookie
setcookie('user', '', time() - 3600);

echo 'Cookie eliminada.';
?>

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ó

  1. Crea un script PHP que iniciï una sessió i estableixi una variable de sessió anomenada user_id amb el valor 12345.
  2. 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

  1. Crea un script PHP que estableixi una cookie anomenada user_email amb el valor [email protected] que expiri en 2 hores.
  2. 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() o setcookie() 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

Mòdul 2: Estructures de Control

Mòdul 3: Funcions

Mòdul 4: Arrays

Mòdul 5: Treballant amb Formularis

Mòdul 6: Treballant amb Fitxers

Mòdul 7: Programació Orientada a Objectes (OOP)

Mòdul 8: Treballant amb Bases de Dades

Mòdul 9: Tècniques Avançades de PHP

Mòdul 10: Frameworks PHP i Millors Pràctiques

Mòdul 11: Projecte: Construint una Aplicació Web

© Copyright 2024. Tots els drets reservats