I cookie sono un metodo rapido per memorizzare, sul computer dei nostri utenti, delle informazioni che vogliamo persistano anche nelle successive visite al nostro sito.
I cookie sono molto utili per memorizzare piccoli dati come ad esempio il nome dell’utente o una serie di preferenze di navigazione. I cookie non sono adatti per informazioni critiche come password o dati personali in quanto potrebbero crearsi dei problemi di sicurezza.
Creare un cookie con PHP
Per creare un cookie con PHP useremo la funzione setcookie() in questo modo:
setcookie("nome_utente", "pippo", time()+3600);
Come vedete all’interno della funzione setcookie() abbiamo inserito 3 parametri:
- il primo specifica il nome identificativo del nostro cookie;
- il secondo specifica il valore del cookie;
- il terzo imposta la scadenza del cookie; se non impostiamo una data di scadenza il coookie non scadrà;
Perchè la funzione abbia esito positivo è necessario inviare il cookie prima di ogni output (esattamente come visto nella lezione precedente dedicata alla funzione header() di PHP). In caso contrario otterremo un errore. Semplificando:
// corretto
setcookie(...);
echo "...";
// errore
echo "...";
setcookie(...);
Facciamo ora un esempio su come memorizzare il nome di un nostro utente (richiesto tramite un form) all’interno di in un cookie. Ecco il codice:
<?php
//recupero il nome dal form
$nome = $_POST['nome'];
//memorizzo il nome in un cookie ed imposto la scadenza tra un'ora...
setcookie("nome_utente", $nome, time()+3600);
?>
Ora che abbiamo memorizzato nel cookie il nome dell’utente potremo tranquillamente richiamarlo in tutte le nostre pagine PHP in questo modo:
<?php
//recupero il valore del cookie...
$nome = $_COOKIE['nome_utente'];
//stampo a video il nome...
echo $nome;
?>
Verificare se un cookie esiste
E’ bene precisare che la funzione setcookie() non garantisce la creazione del cookie voluto. La funzione, infatti, si limita ad inviare le giuste intestazioni HTTP, poi spetta al client del vostro utente accettarle o meno. Quindi, prima di utilizzare un cookie che si presume esistere, è buona norma effettuare una verifica di questo tipo:
<?php
// verifico se il cookie esiste
if (isset($_COOKIE['nome_utente'])) {
$nome = $_COOKIE['nome_utente'];
echo $nome;
}
?>
Per effettuare questo tipo di controllo abbiamo utilizzato la funzione isset() di PHP che verifica, appunto, se una variabile è stata settata o meno.
Cambiare il valore di un cookie
Se vogliamo cambiare il valore del nostro cookie basterà ripetere semplicemente l’operazione di assegnazione:
<?php
//imposto come valore "pippo"
setcookie("nome_utente", "pippo");
//ho cambiato idea e imposto come "pluto"
setcookie("nome_utente", "pluto");
?>
Cancellare un cookie
Se invece vogliamo cancellare il cookie basterà richiamare il cookie specificando null come valore:
setcookie("nome_utente", null);
oppure possiamo reimpostare la scadenza ad un momento passato:
setcookie("nome_utente", null, time()-3600);
In entrambi i casi il cookie verrà cancellato.