Tag Archive for 'setcookie'

Cancellare un cookie

Già visto come inizializzare un cookie.
Cancellarlo è ancora più semplice. Basta infatti renderlo scaduto.
Eccoti l'esempio di come cancellare un cookie chiamato nome_visitatore

PHP:
  1. setcookie("nome_visitatore", "", time()-9999);

Inizializzare un cookie

Per inizializzare un cookie con php si utilizza la funzione
setcookie(nome, valore, scadenza, percorso, dominio, sicurezza);
che va messa all'inizio dello script.
I parametri, di facile lettura:

  • nome: è il nome che avrà il cookie;
  • valore: il valore del cookie;
  • scadenza: indica quando scadrà il cookie in secondi;
  • percorso: del server su cui il cookie sarà disponiblie
  • dominio: il dominio relativo
  • sicurezza: se settato su TRUE il cookie si inizializza solo se esiste una connessione https (possiamo tralasciare)

Supponiamo di voler chiedere ad un visitatore il suo nome per registrarlo su un cookie e salutarlo ogni volta che ritorna sul sito.
Per prima cosa nella pagina index.php verifichiamo che il cookie non esista già, se non esiste chiediamo al visitatore di inserire il suo nome tramite un semplice form che invierà le informazioni a set_cookie.php, altrimenti possiamo già salutarlo chiamandolo per nome.

PHP:
  1. <?php
  2. $the_cookie=$_COOKIE['nome_visitatore'];
  3.  
  4. if (empty($the_cookie)) {
  5.     echo "  <form method=\"post\" action=\"set_cookie.php\">
  6.           Ciao, come ti chiami?
  7.           <input type=\"text\" name=\"nome\" />
  8.           <input type=\"submit\" name=\"Submit\" value=\"Submit\" />
  9.           </form>";
  10.  } else {
  11.      echo "Ciao ".$the_cookie."!";
  12.  }
  13.  ?>

in set_cookie.php avremo dunque il recupero del nome inviato e l'inizializzazione del cookie.

PHP:
  1. <?php
  2. $nome_da_registrare=$_POST['nome'];
  3. setcookie("nome_visitatore",$nome_da_registrare, time()+3600, "/");
  4.  
  5. echo "Cookie inizializzato, <a href=\"index.php\">Torna indietro</a>";
  6. ?>

N.B.
time()+3600 -> equivale a un'ora.
"/" -> il coockie è valido per tutto il dominio
il paramentro dominio può essere tralasciato se non esistono subdomini