JavaScript/Cookie
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 su Wikipedia, vedi la voce Cookie. |
Impostare i cookie
[modifica | modifica sorgente]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;
}
Ottenere i cookie
[modifica | modifica sorgente]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:
cookie1=value1; cookie2=value2; cookie3=value3;
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;
}
Verificare se i cookie sono attivi
[modifica | modifica sorgente]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;
}
Eliminare o sostituire un cookie
[modifica | modifica sorgente]Poiché ad ogni nome corrisponde un solo cookie, per modificare il contenuto di un cookie chiamato NomeUtente è sufficiente la riga
impostaCookie(NomeUtente, nuovo_contenuto, nuova_scadenza);
Per eliminare un cookie, invece, basta sostituire al testo del cookie una stringa vuota:
impostaCookie(NomeUtente, "");
Librerie JavaScript per i cookie
[modifica | modifica sorgente]Puoi utilizzare una libreria JavaScript per facilitare la gestione dei cookie, come js-cookie, o altre.