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

Gestire i Cookie con PHP

Impariamo a generare, leggere e cancellare i cookie con PHP, piccoli file destinati a raccogliere informazioni riguardanti l'utente in navigazione.
Impariamo a generare, leggere e cancellare i cookie con PHP, piccoli file destinati a raccogliere informazioni riguardanti l'utente in navigazione.
Link copiato negli appunti

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.

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'];

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.

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"));

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']);

Ti consigliamo anche