back to top

Cookie PHP: la funzione setcookie()

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:

  1. il primo specifica il nome identificativo del nostro cookie;
  2. il secondo specifica il valore del cookie;
  3. 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.

Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).