JavaScript/Cookie
Wikibooks, manuali e libri di testo liberi.
Una funzionalità molto interessante messa a disposizione da JavaScript è la possibilità di gestire i cookie.
In informatica, i cookie sono piccoli file di testo memorizzati sul computer dell'utente che contengono informazioni salvate dai siti web. La comodità dei cookie sta quindi nella possibilità di memorizzare in modo permanente delle informazioni univoche rispetto ad un utente; hanno tuttavia lo svantaggio di poter essere eliminati e disabilitati dall'utente.
Ciascun cookie è composto da alcuni parametri, tra i quali:
- nome: un nome identificativo per il cookie
- valore: il valore da memorizzare
- scadenza (expiration date): è opzionale, stabilisce la data di scadenza del cookie, cioè la data dopo la quale questi vengono eliminati dal disco rigido dell'utente.
| Per approfondire vai su Wikipedia, vedi la voce Cookie. |
[modifica] Impostare i cookie
In JavaScript per impostare i cookie usiamo la proprietà cookie dell'oggetto document passandole come valore una stringa contenente i vari parametri separati da punto e virgola. Ecco ad esempio una semplice stringa di cookie:
NomeUtente=Ramac;expires=Tue, 28 August 2007 00:00:00
Questa stringa imposta un cookie NomeUtente al valore Ramac con scandenza 28 Agosto 2007. Potremo salvare questo cookie con l'istruzione
document.cookie="NomeUtente=Ramac;expires=Tue, 28 August 2007 00:00:00"
La sintassi è quindi:
NomeCookie=Valore;parametri
Nel caso si volesse inserire nella stringa del valore un punto e virgola, è necessario usare la funzione escape() che converte tutti i caratteri particolari nel corrispondente esadecimale nel set di caratteri Latin-1. Questo vale anche per gli spazi, gli apostrofi, le virgole, ecc....
Per comodità, è possibile creare una funzione che crei i cookie partendo da tre parametri:
function impostaCookie (nome, valore, scadenza) { if (scadenza == "") { var oggi = new Date(); oggi.setMonth(oggi.getMonth() + 3); //restituisce la data nel formato necessario scadenza = oggi.toGMTString(); } valore = escape(valore); document.cookie=nome + "=" + valore + ";expires=" + scadenza; }
[modifica] Ottenere i cookie
Per ottenere i valori dei cookie relativi al proprio documento è necessario accedere alla proprietà document.cookie che restituisce una stringa contenente coppie di nome-valore di ciascun dato separate da un punto e virgola e uno spazio. Ad esempio:
NomeUtente=Ramac; UltimaVisita=Thu, 30 August 2007 13:34:12
Possiamo notare due punti importanti:
- mentre è possibile impostare valori come la data di scadenza del cookie, non è possibile ottenerli una volta modificati
- i dati per una comoda lettura necessitano di una manipolazione stringa
Per la lettura dei cookie, può risultare utile questa funzione che restituisce il valore di un cookie a partire dal suo nome:
function valoreCookie (nome) { var valore=document.cookie; //ottiene la stringa di cookie var inizioCookie=valore.indexOf(" " + nome + "="); //trova il cookie desiderato //se non esiste, magari è all'inizio della stringa if (inizioCookie == -1) { inizioCookie = valore.indexOf(nome + "="); } if (inizioCookie == -1) { //il cookie non esiste proprio valore = null; } if (inizioCookie >= 0) //il cookie esiste //qui inizia la stringa del valore inizioCookie = valore.indexOf("=", inizioCookie) + 1; var fineCookie = valore.indexOf(";", inizioCookie); //qui finisce if (fineCookie == -1) //se non viene trovato, allora è l'ultimo cookie fineCookie = valore.length; //elimina i caratteri commutati valore = unescape(valore.substring(inizioCookie, fineCookie)); } return valore; }
[modifica] Verificare se i cookie sono attivi
Come è già stato accennato in precedenza, uno degli svantaggi dei cookie risiede nel fatto che possono essere facilmente disabilitati dall'utente; è pertanto necessario sviluppare soluzioni alternative ai cookie, soprattutto se sono parte essenziale della propria applicazione web.
Il modo più semplice per verificare se i cookie sono attivati è quello di crearne uno fittizio e verificare se è possibile ottenerne il valore. La seguente è una funzione che restituisce true se i cookie sono abilitati:
function cookieAttivi () { ris = false; //imposta il risultato a falso impostaCookie("testCookie", "test"); //crea il cookie fittizio if (valoreCookie("testCookie") == "test") { //se esiste ris = true; //allora i cookie sono abilitati } return ris; }

