Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 62 di 67
  • livello intermedio
Indice lezioni

Mantenere lo stato: i cookie

Mantenere in memoria le credenziali di un utente attraverso i cookie
Mantenere in memoria le credenziali di un utente attraverso i cookie
Link copiato negli appunti

Un cookie è una coppia chiave/valore avente una data di scadenza ed un dominio di validità che viene salvata sul PC dell'utente ed inviata (attraverso appositi header HTTP) ad ogni pagina dalla quale possa essere acceduta.

Grazie ai cookie è possibile identificare con buona sicurezza le credenziali di un utente che accede ad una pagina, oppure salvare dei dati per un successivo recupero. Per esempio si potrebbe salvare su un cookie un valore indicante l'ultima pagina visualizzata, in modo da occuparsi di ridirigere l'utente all'ultima pagina visualizzata nel momento in cui si connettesse nuovamente al nostro sito.

La creazione di un cookie è un'operazione molto semplice, che in PHP può essere effettuata utilizzando un'unica chiamata alla funzione setcookie(). Questa funzione accetta un numero variabile di parametri. Nell'ordine:

  • Il nome del cookie
  • Il valore del cookie, che dovrà essere necessariamente un valore scalare (intero o stringa, gli array non possono essere salvati direttamente)
  • Un numero indicante la data di scadenza del cookie. Nel caso questo numero sia 0 o non specificato, il cookie durerà fino a che l'utente non chiuderà il suo browser. Nel caso in cui il timestamp specificato risulti in una data precedente a quella attuale, il cookie viene cancellato
  • Il path di validità del cookie
  • Il dominio di validità del cookie
  • Un parametro boolean che indica se trasmettere il cookie solamente attraverso una connessione sicura HTTPS

I cookie creati sono disponibili solamente dalla pagina successiva alla loro creazione. 

Dato che la funzione setcookie() genera esplicitamente un header HTTP, è necessario che prima del suo utilizzo non sia stato stampato (usando echo, print o qualunque altro metodo di output) alcun valore, altrimenti verrà generato un errore. Anche una riga vuota all'inizio del file prima del tag di apertura PHP porterà alla generazione di questo errore.

Alcuni esempio di creazione di un cookie:

setcookie('prova_cookie', 'valore cookie', /* dura per un'ora */ time() + 3600);
setcookie('prova_2', 'ciao'); //cookie che dura fino a che l'utente non chiude il browser

Per cancellare un cookie è necessario utilizzare la stessa funzione specificando gli stessi parametri utilizzati in fase di creazione ma utilizzando una data di scadenza precedente a quella attuale.

setcookie('prova_cookie', '', time() - 3600);

Una volta creato un cookie il suo valore sarà accessibile attraverso $_COOKIE[$nome_cookie] nelle pagine successive a quella attuale, presupponendo che la data di scadenza non sia trascorsa e che siano rispettate le restrizioni di dominio e cartella.

È buona norma non creare troppi cookie, dato che i browser hanno un limite sia relativo ad uno specifico dominio che ad una specifica cartella. In caso fosse necessario mantenere molti valori, è preferibile salvarli su database o file e salvare nel cookie una chiave che ne permetta l'accesso nella pagine successive. I cookie sono facilmente recuperabili e leggibili, quindi è importante non salvare mai informazioni private o vitali, salvo previa criptazione.

Ti consigliamo anche