Sessioni e cookie
Il problema della memoria nel web
Sezione intitolata “Il problema della memoria nel web”Ogni richiesta web e separata dalle altre. Se apri una pagina e poi un’altra, PHP non ricorda automaticamente chi sei.
Sessioni e cookie servono a conservare informazioni tra una richiesta e la successiva.
Un cookie e un piccolo dato salvato nel browser dell’utente.
<?phpsetcookie("tema", "scuro", time() + 3600);Questo cookie dura un’ora. 3600 sono secondi.
Alla richiesta successiva puoi leggerlo:
<?php$tema = $_COOKIE["tema"] ?? "chiaro";echo $tema;I cookie sono utili per preferenze semplici, come lingua o tema.
Sessioni
Sezione intitolata “Sessioni”Una sessione salva i dati sul server e collega l’utente a quei dati tramite un identificatore.
Devi chiamare session_start() prima di usare $_SESSION.
<?phpsession_start();
$_SESSION["nome"] = "Luca";In un’altra pagina:
<?phpsession_start();
$nome = $_SESSION["nome"] ?? "ospite";echo "Ciao $nome";Quando usare le sessioni
Sezione intitolata “Quando usare le sessioni”Le sessioni sono adatte per login, carrelli e dati temporanei legati alla visita.
I cookie sono adatti per piccole preferenze che possono restare nel browser.
Chiudere una sessione
Sezione intitolata “Chiudere una sessione”Per un logout semplice:
<?phpsession_start();session_destroy();Attenzione: non salvare password in chiaro dentro cookie o sessioni. Per un login reale servono controlli di sicurezza piu completi.
Un esempio di preferenza con cookie
Sezione intitolata “Un esempio di preferenza con cookie”Un cookie e adatto per una preferenza semplice.
<?phpsetcookie("lingua", "it", time() + 60 * 60 * 24 * 30);Questo cookie dura circa 30 giorni. Alla visita successiva puoi leggere la lingua scelta.
<?php$lingua = $_COOKIE["lingua"] ?? "it";Un esempio di login con sessione
Sezione intitolata “Un esempio di login con sessione”In un login reale dovresti controllare email e password nel database. Qui guardiamo solo il meccanismo della sessione.
<?phpsession_start();
$_SESSION["utente_id"] = 15;Nelle pagine riservate puoi controllare se l’utente e presente.
<?phpsession_start();
if (!isset($_SESSION["utente_id"])) { echo "Devi accedere"; exit;}Errore comune: dimenticare session_start
Sezione intitolata “Errore comune: dimenticare session_start”Se usi $_SESSION senza session_start(), PHP non apre la sessione. Metti session_start() all’inizio del file, prima di stampare HTML.