I cookie sono una sorta di identificativo che viene utilizzato dai siti Web per memorizzare informazioni relative agli utenti.
Questo strumento ci consente, ad esempio, di realizzare un meccanismo di autenticazione e di riconoscere se un utente è ancora loggato sul sito oppure no. Altri comportamenti utili dei cookie possono memorizzare alcune azioni come la richiesta di chiudere un banner pubblicitario così da non visualizzarlo alla prossima visita.
I cookie vengono memorizzati automaticamente dal browser, quindi fino alla cancellazione continueranno ad identificare l'utente. È possibile anche impostare una data di scadenza in modo che sia il sito Web a decidere per quanto tempo salvare questa informazione. Si può decidere infatti di tenere memorizzato un cookie fino alla chiusura del browser.
In PHP i cookie sono memorizzati all'interno dell'array riservato $_COOKIE
. Effettuando quindi un dump dell'array otterremo un'informazione simile alla seguente:
var_dump($_COOKIE);
array(3) {
["__utma"]=>
string(55) "111872281.2010784770.1481539931.1481977233.1481996919.4"
["__utmc"]=>
string(9) "111872281"
["__utmz"]=>
string(70) "111872281.1481539931.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)"
}
Ovviamente questi valori differiscono in base alla pagina che stiamo visitando, all'utente che accede e a diversi altri fattori. Nel nostro esempio ci sono tre cookie con nome __utm*
(che corrisponde alla chiave dell'array) e relativi valori.
Accedere al valore di un cookie
Per accedere al valore di un singolo cookie non abbiamo bisogno d'introdurre nuove funzioni ma possiamo accedere al singolo elemento dell'array. Supponiamo di avere un cookie chiamato user_id
, possiamo stampare il suo valore con:
echo $_COOKIE['user_id'];
Aggiungere un nuovo cookie
Per generare un nuovo cookie dobbiamo introdurre la funzione setcookie()
con la quale impostare anche la durata oltre al nome e al valore. Prima di proporre un esempio, però, è bene specificare che i cookie fanno parte dell'header di una risposta HTTP, quindi è necessario eseguire queste operazioni prima che venga inviata la risposta del server. In termini più semplici bisognerebbe compiere le operazioni di scrittura dei cookie prima che venga prodotto qualsiasi output.
Supponiamo di voler salvare l'id di un utente all'interno di un cookie:
setcookie("user_id", "345", strtotime("+1 year"));
La funzione setcookie()
prende in ingresso i parametri:
Parametro | Descrizione |
---|---|
name | Nome del cookie, nel nostro caso user_id . |
value | Valore del cookie (345 ). |
expire | Scadenza del cookie (1 anno). |
path | Percorso per cui è valido. Di default è impostato su tutto il sito, ma se ad esempio scegliamo /sottodirectory/ esso sarà valido solo per quel percorso. |
domain | Dominio per cui è valido. |
secure | Indica se il cookie dovrebbe essere trasmesso attraverso una connessione HTTPS. |
httponly | Indica se il cookie è accessibile solo attraverso il protocollo HTTP. Questo implica, ad esempio, che se il valore è true il cookie non è accessibile da Javascript. |
Modificare il valore di un cookie
Per modificare qualsiasi informazione relativa ad un cookie è sufficiente richiamare la funzione setcookie()
con i nuovi dati. Ad esempio per cambiare lo user id possiamo richiamarlo come segue:
setcookie("user_id", "123", strtotime("+1 year"));
Eliminare un cookie
L'eliminazione di un cookie avviene come per la chiave di un array attraverso l'invocazione di unset
. Se vogliamo cancellare il cookie precedente è quindi sufficiente richiamare:
unset($_COOKIE['user_id']);