back to top

Creare, leggere e cancellare un cookie con Javascript

Piรน volte su queste pagine abbiamo affrontato lโ€™argomento della gestione dei cookie generalmente facendo riferimento a linguaggi di scripting lato server come ad esempio PHP. Eโ€™ bene ricordare, invece, che รจ possibile manipolare i cookie validamente anche attraverso istruzioni lato client. In questa lezione della nostra guida, infatti, ci occuperemo di introdurre il lettore alla possibilitร  di gestire e manipolare i cookie allโ€™interno di una comune pagina HTML mediante Javascript.

Per chi non lo sapesse (cosa ci fate su Mr.Webmaster?) i cookie sono dei piccoli file di testo che vengono creati sul computer client durante la navigazione di talune pagine web al fine di memorizzare delle informazioni utili allโ€™esperienza di navigazione dellโ€™utente. Mediante i cookie รจ possibile, ad esempio, memorizzare delle preferenze di navigazione, dei dati di accesso, informazioni sulle pagine visitate, ecc.

Pubblicitร 

I cookie, come appena detto, sono dei banalissimi file di testo il cui contenuto deve seguire una sintassi ben precisa:

nome_cookie=valore_cookie; expires=<em>data di scadenza in formato UTC</em>; path=<em>dominio e percorso in cui รจ attivo il cookie</em>

Gli elementi costitutivi di un cookie sono, quindi, tre:

  • lโ€™accoppiata "nome del cookie" = "valore del cookie";
  • la scadenza (facoltativa) in formato UTC;
  • il path (facoltativo) dato dal dominio piรน il percorso;

Se non viene specificata una scadenza il cookie verrร  cancellato al termine della sessione di navigazione che lo ha creato. Se non viene specificato il path il browser dovrebbe impostarlo automaticamente per il dominio ed il percorso corrente. Per utilizzare il cookie su tutto il sito generalmente si usa:

path=/

Il linguaggio Javascript, come avrete intuito, รจ in grado di manipolare i cookie con una certa dimestichezza. Grazie alla proprietร  document.cookie, infatti, ci รจ possibile creare, leggere, modificare e cancellare i cookie attraverso una comune pagina HTML (cioรจ senza fare ricorso ai linguaggi di scripting lato server). Facciamo un esempio di creazione di cookie:

document.cookie = 'mio_nome=Massimiliano; expires=Tue, 23 June 2009 22:47:11 UTC; path=/'

Con la stringa di codice qui sopra ho creato un semplice cookie chiamato mio_nome con valore Massimiliano; per modificarne il valore sarebbe sufficiente ripetere la medesima operazione assegnando un nuovo valore.

In realtร  le operazioni sui cookie con Javascript sono meno intuitive e semplici di quanto lo siano con altri linguaggi; Javascript, infatti, non dispone di funzioni ad hoc per la manipolazione dei cookieโ€ฆ ma dove non arriva il linguaggio, arriva il programmatore! Vediamo quindi come crearci da soli un set di funzioni per la gestione lato-client dei cookie

Creare un cookie

Per creare un cookie รจ consigliabile avere a portata di mano una funzione ad hoc. Di seguito la funzione che sono solito utilizzare io:

function scriviCookie(nomeCookie,valoreCookie,durataCookie)
{
  var scadenza = new Date();
  var adesso = new Date();
  scadenza.setTime(adesso.getTime() + (parseInt(durataCookie) * 60000));
  document.cookie = nomeCookie + '=' + escape(valoreCookie) + '; expires=' + scadenza.toGMTString() + '; path=/';
}

La nostra funzione richiede tre semplici argomenti:

  • il nome del cookie che si desidera creare;
  • il valore da assegnare al cookie che si va creando;
  • la durata del cookie espressa in minuti (trascorso il tempo indicato il browser cancellerร  il cookie in quanto scaduto).

Supponiamo di voler creare un semplice cookie che scada dopo unโ€™ora dalla sua creazione:

scriviCookie('mio_nome','massimiliano',60);

La medesima funzione puรฒ essere utilizzata anche per effettuare delle modifiche su un cookie giร  esistente; per farlo sarร  sufficiente ripetere lโ€™operazione inserendo al primo argomento della nostra funzione il nome del cookie che si desidera modificare:

scriviCookie('mio_nome','Luca',60);

Il cookie mio_nome (che avevo giร  creato in precedenza) orร  avrร  come valore Luca al posto di Massimiliano.

Leggere i cookie

La lettura di un cookie con Javascript richiede un procedimento piuttosto complesso e davvero poco intuitivo; per questo motivo una funzione ad hoc sembra davvero irrinunciabile. Vediamola:

function leggiCookie(nomeCookie)
{
  if (document.cookie.length > 0)
  {
    var inizio = document.cookie.indexOf(nomeCookie + "=");
    if (inizio != -1)
    {
      inizio = inizio + nomeCookie.length + 1;
      var fine = document.cookie.indexOf(";",inizio);
      if (fine == -1) fine = document.cookie.length;
      return unescape(document.cookie.substring(inizio,fine));
    }else{
       return "";
    }
  }
  return "";
}

La nostra funzione effettua, in sostanza, una serie di passaggi per andare ad individuare il valore assegnato al cookie specificato in argomento. Vediamo un esempio di utilizzo:

var nome = leggiCookie('mio_nome');
document.write('Il tuo nome รจ: ' + nome);

Nel caso del cookie creato allโ€™esempio precedente lโ€™output sarร :

Il tuo nome รจ: Luca

Cancellare un cookie

La procedura di cancellazione di un cookie puรฒ essere gestita mediante una funzione a ciรฒ preposta che, a sua volta, farร  nuovamente ricorso alla fondamentale funzione scriviCookie() vista in precdenza:

function cencellaCookie(nomeCookie)
{
  scriviCookie(nomeCookie,'',-1);
}

In sostanza il cookie viene modificato mediante lโ€™assegnazione di un valore vuoto (nessun valore) ed una scadenza negativa (cookie giร  scaduto). Per cancellare un cookie utilizzeremo quindi:

cancellaCookie('mio_nome');

Verificare che il browser accetti i cookie

Altra operazione piuttosto frequente negli script che fanno utilizzo dei cookie รจ la verifica circa lโ€™accettazione o meno degli stessi da parte del browser. Non tutti i browser, infatti, accettano i cookie e, pertanto, รจ opportuno effettuare delle verifiche preliminari con Javascript prima di lanciare le operazioni sui cookie. Per effettuare una simile verifica, ancora una volta, vi suggerisco di utilizzare una funzione apposita come questa:

function verificaCookie()
{
  document.cookie = 'verifica_cookie';
  var testcookie = (document.cookie.indexOf('verifica_cookie') != -1) ? true : false;
  return testcookie;
}

In sostanza la funzione prova a creare un cookie e subito dopo verifica se il cookie รจ stato creato o meno. Di seguito un esempio di funzionamento:

var test = verificaCookie();
if (test == true) alert('Il tuo browser accetta i cookie!');
else alert('I biscotti non ti piacciono :-(');

Scaricate lโ€™intero set di funzioni Javascript per la manipolazione dei cookie

Per praticitร  vi invito a scaricare lโ€™intero set di funzioni che trovate giร  pronto allโ€™uso allโ€™interno di questa pagina. Lโ€™unica cosa che dovete fare รจ scaricare lo ZIP e decomprimerlo; al suo interno troverete il file cookies.js che dovrete caricare sul vostro spazio web e poi richiamare allโ€™interno di tutte le pagine del vostro sito attraverso le quali desiderate compiere operazioni di manipolazione dei cookie:

<script src="cookies.js"></script>

Una volta linkato il file contenente le funzioni queste saranno liberamente utilizzabili nei modi visti sopra.

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).