Spesso abbiamo bisogno di memorizzare più informazioni in cookies, ma il limite massimo per i cookie è di 4 kB, che non è molto. Sessions risolve questo problema memorizzando i dati sul server web, e memorizza solo un breve identificatore nel browser del cliente per dire quali dati appartengono a quale cliente.
Prima di fare qualsiasi lavoro con le sessioni, dobbiamo prima avviarle. Questo viene fatto chiamando la funzione session_start()
proprio all'inizio dello script:
session_start();
Forte avvertimento: nessun output in codice HTML deve essere eseguito prima di chiamare la funzione
session_start()
!
Il contenuto della sessione è memorizzato sul server e solo l'identificatore è inviato al browser client, quindi l'utente non ha modo di sapere cosa è memorizzato nella sessione. L'unico modo in cui lo script può influenzare l'utente è cancellando l'identificatore (al che lo script ne genererà uno nuovo).
Tutte le sessioni sono memorizzate nella variabile superglobale $_SESSION
e possono essere attraversate come un array.
Per esempio, il nome dell'utente attualmente loggato può essere recuperato scrivendo:
echo $_SESSION['utente'];
Nota: la sessione potrebbe non esistere sempre (per esempio, se sei un nuovo utente). Pertanto, dovremmo sempre controllare l'esistenza prima di qualsiasi annuncio e offrire un messaggio di errore alternativo se necessario.
if (isset($_SESSION['utente']) && $_SESSION['utente']) {echo 'Utente registrato:' . $_SESSION['utente'];} else {echo 'Nessuno si è registrato.';}
Il salvataggio è fatto come un semplice salvataggio di dati in una variabile:
$_SESSION['utente'] = 'Honzik';
Il server web si occuperà della disposizione tecnica della corretta memorizzazione sul server e dell'invio dell'identificatore all'utente.
I singoli valori possono essere cancellati separatamente secondo la chiave:
unset($_SESSION['utente']);
O in alternativa tutte le sessioni disponibili:
unset($_SESSION);
Nota: la cancellazione di una sessione specifica non svuota il valore della chiave, ma cancella completamente la chiave. Pertanto, verrà lanciato un avviso di errore quando si cerca di leggere una chiave inesistente. Possiamo sempre verificare facilmente l'esistenza di una chiave con la funzione
isset()
.
Ogni sessione salvata ha un limite di tempo in cui sarà conservata sul server. PHP contiene direttamente uno script cron che cancella periodicamente le vecchie sessioni.
Il valore predefinito è di solito 1440 secondi
, che è 24 minuti
.
L'aumento del valore deve essere fatto in 2 punti:
php.ini
è impostata la lunghezza massima di validità che il server manterrà. Il valore è impostato dalla direttiva session.gc_maxlifetime
,Uso in PHP:
// il server manterrà ora la sessione per un massimo di 3600 secondi = 1 oraini_set('sessione.gc_maxlifetime', '3600');// tutti i client (browser) saranno// sessione inviata con una validità di esattamente 3600 secondisession_set_cookie_params(3600);session_start(); // possiamo iniziare la sessione!
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | it