Cos’è un cookie e a cosa serve

In questo articolo vedremo, nel dettaglio, cos’è un cookie e come sfruttarlo al meglio, utilizzando PHP uno dei linguaggi più diffusi al mondo.

Un cookie non è altro che, un piccolo file di testo che ti consente di memorizzare una piccola quantità di dati (all’incirca 4 KB) sul computer dell’utente. Sono tipicamente utilizzati per tenere traccia di informazioni come il nome utente che il sito può recuperare per personalizzare la pagina quando l’utente visita il sito per la prossima volta.

Pertanto ogni volta che il browser effettua una nuova richiesta al server, tutti i dati dei cookie, vengono spediti automaticamente al server all’interno della richiesta stessa.

Dopo aver capito cos’è un cookie vediamo come crearlo utilizzando la funzione setcookie() di PHP. Come già anticipato setcookie viene utilizzata per impostare e creare un cookie in PHP. Assicurati di chiamare tale funzione, prima di generare o inviare dati in output dal tuo script altrimenti il ​​cookie non verrà impostato. La sintassi di base di questa funzione è:

setcookie ( nome , valore , scadenza , percorso , dominio , sicurezza );

I parametri di setcookie() possono essere così riassunti:

ParametroDescrizione
nomeIl nome del cookie.
ValoreIl valore del cookie. Non archiviare informazioni sensibili poiché questo valore è archiviato nel computer dell’utente, e di conseguenza questi dati potrebbero essere letti da malintenzionati.
ScadenzaLa data di scadenza nel formato timestamp UNIX. Trascorso questo tempo i cookie diventeranno inaccessibili, cioè il valore di un cookie non sarà più leggibile. Pertanto il suo valore predefinito sarà 0.
PercorsoSpecificare il percorso sul server per il quale il cookie sarà disponibile. Se impostato su /, il cookie sarà disponibile all’interno dell’intero dominio. Quindi ogni script, presente all’interno del dominio, potrà recuperare e sfruttare il valore del cookie.
DominioSpecificare il dominio per il quale il cookie è disponibile, ad esempio www.example.com.
SicurezzaQuesto campo, se presente, indica che il cookie deve essere inviato solo se esiste una connessione HTTPS sicura.
Tutti i parametri della funzione setcookie

Tieni presente che, se la data di scadenza del cookie viene omessa o impostata a 0, il cookie scadrà alla fine della sessione, cioè alla chiusura del browser.

Ecco un esempio che utilizza la funzione setcookie() per creare un cookie denominato username e assegnargli il valore John Carter. È specificato, inoltre, che il cookie scadrà tra 30 giorni ( 30 giorni * 24 ore * 60 min * 60 sec).

Esempio:

<?php
   // -----------------
   // Imposta un cookie
   // -----------------
   setcookie("username", "John Carter", time()+30*24*60*60);
?>

È importante precisare che, tutti i parametri della funzione setcookie sono facoltativi tranne il nome. Nel caso in cui un argomento venga tralasciato è opportuno sostituirlo con i doppi apici (“”). Per omettere la scadenza del cookie, impostare a 0 il parametro relativo.

Uno sviluppatore web, non memorizza mai dati sensibili all’interno di un cookie, come ad esempio la password di accesso ad un portale o altro… pertanto nel caso in cui fosse necessario salvare dati sensibili in modo sicuro è consigliabile utilizzare le sessioni.

Il PHP offre tutta una serie di variabili globali che lo sviluppatore può sfruttare per gestire al meglio delle funzionalità che una web app in produzione richiede. Una di queste variabili è la variabile globale $_COOKIE  in PHP, viene utilizzata per recuperare il valore di un cookie. Solitamente è un array associativo che contiene un elenco di tutti i valori dei cookie inviati dal browser nella richiesta corrente, codificati dal nome del cookie stesso. 

È possibile accedere al valore di un singolo cookie utilizzando la notazione di matrice standard, ad esempio per visualizzare il cookie del nome utente impostato nell’esempio precedente, è possibile utilizzare il seguente codice.

Esempio:

<?php
   // ----------------------------------------
   // recupero del valore di un cookie
   // attraverso la variabile globale $_COOKIE
   // ----------------------------------------
   echo $_COOKIE["username"];
?>

Il codice PHP dell’esempio precedente produce il seguente output:

John Carter

È buona norma verificare sempre se un cookie è impostato o meno prima di accedere al suo valore. Per fare questo puoi usare la funzione isset() di PHP:

Esempio:

<?php
   // ----------------------------------------
   // Verifica se un cookie è impostato o meno
   // ----------------------------------------
   if(isset($_COOKIE["username"])){
      echo "Ciao " . $_COOKIE["username"];
   } else{
      echo "Benvenuto…!";
   }
?>

Puoi usare anche la funzione print_r() di PHP in questo modo: print_r($_COOKIE);  per vedere la struttura dell’array associativo $_COOKIE, esattamente come fai con gli altri tipi di array.

È possibile eliminare un cookie richiamando sempre la funzione setcookie() con il nome del cookie e qualsiasi valore (come una stringa vuota, ad esempio), tuttavia questa volta è necessario impostare la data di scadenza al passato, come mostrato nell’esempio seguente:

Esempio:

<?php
   // --------------------
   // Cancellare un cookie
   // --------------------
   setcookie("username", "", time()-3600);
?>

Per assicurarti che il cookie venga eliminato correttamente, dovresti passare alla funzione setcookie,  esattamente gli stessi parametri che hai utilizzato quando hai creato il cookie.

Come creare Cookie con PHP

Antonio Lamorgese

Amministratore di rete e sviluppatore. Dopo anni di esperienza nel settore, ho ideato un sistema di gestione dati MYSQL in PHP senza scrivere una sola riga di codice. Scopri di più....