Sei sulla pagina 1di 3

CREARE COOKIES IN JAVASCRIPT

GUIDE TECNICHE, INTERNET CON NESSUN COMMENTO

I cookies sono probabilmente lo strumento pi popolare per gestire la persistenza delle sessioni con gli utenti. Chi non sapesse cosa sono i cookies, o perch sono cos importanti, consigliamo di dare unocchiata agli articoli sul protocollo HTTP e sulla sessione HTTP. Esistono molti modi di settare i cookies, ed ogni browser li gestisce in modo diverso. Ad esempio, FireFox su Windows 7 solitamente memorizza i cookies nel file
C:\Users\Nome Utente\AppData\Local\Google\Chrome\User Data\Default\Cookies

che in questo caso un mini-database realizzato con SQLite (chi volesse curiosare allinterno del database pu usare il plugin SQLite Manager per Firefox). In ogni caso, qualsiasi sia il modo in cui il browser gestisce fisicamente i cookies, JavaScript ci offre uninterfaccia comoda e maneggevole, che permette di gestire i cookies senza preoccuparci di dove e come sono memorizzati. Loggetto JavaScript dedicato alla gestione dei cookie
document.cookie

Un modo semplice di settare un cookie potrebbe essere


document.cookie='foo=42;expires=Tue, 01 May 2012 22:47:11 UTC;path=/' ;

nellesempio qui sopra abbiamo settato un cookie di nome foo, con valore 42 e scadenza il 1 maggio 2012 (ignoriamo il path per il momento). Loggetto document.cookie un oggetto molto speciale, che permette un uso diverso dalle altre variabili JavaScript. Se qualche riga sotto la definizione del cookie foo scriviamo anche
document.cookie='faa=ciao;expires=Tue, 01 May 2012 22:47:11 UTC;path=/' ;

il risultato sar che avremo definito due cookies: foo e faa. In altre parole, ogni volta che assegniamo un valore alloggettodocument.cookie aggiungiamo un nuovo cookie al documento, e non cambiamo il valore delloggetto (come si potrebbe pensare).

Un cookie pu essere anche settato usando la sintassi ridotta


document.cookie='foo=hello' ;

Se la scadenza e il path del cookie non vengono precisati, il cookie verr cancellato al termine della sessione HTTP, mentre il path dovrebbe impostarsi automaticamente sul dominio e percorso corrente (quello della pagina dove viene creato il cookie). Il parametro path serve per dire al browser quando mandare il cookie, altrimenti manderemo tutti i cookies per qualsiasi richiesta HTTP sul nostro sito. Settando ad esempio path='/' sul dominioaziendeitalia.com manderemo il cookie tutte le volte che navighiamo su AziendeItalia (o un suo sottodominio). Scrivendo invecepath='/promozioni' allegheremo il cookie allheader HTTP solamente quando navighiamo allinterno delle promozioni. Per cancellare un cookie basta assegnare una scadenza nel passato, tipicamente ununit di tempo prima dellistante presente. Se stiamo creando cookies con scadenze dei giorni, ci torner comodo farli scadere settando come scadenza il giorno prima (ieri). Se li gestiamo con scadenze delle settimane, li cancelleremo facendoli scadere una settimana fa. Alla fine non cambia nulla, qualsiasi scadenza nel passato ha lo stesso effetto, ovvero rimuove il cookie. La funzione Javascript Vediamo adesso una funzione comoda per settare un cookie, precisando la scadenza come numero di minuti a partire dal current time:
function setCookie(name, value, last) { if (last) { var now = new Date() ; var expires = new Date() ; expires.setTime(now.getTime()+(parseInt(last)*60*1000)) ; document.cookie=name+'='+escape(value)+'; expires='+ expires.toGMTString()+'; path=/'; } else { document.cookie=name+'='+escape(value)+'; expires= ; path=/'; } }

la funzioni qui sopra pu essere inclusa in una pagina, allinterno delle tag <script> </script>, per aiutarci a gestire i cookies in modo semplice e veloce. Consideriamo ad esempio
setCookie('foo','ciao',120); setCookie('faa','hello',0);

la prima chiamata setter il cookie foo con valore ciao, e lo far scadere tra 2 ore (120 minuti). La seconda chiamata crear il cookiefaa con valore hello, che scadr quando lutente chiuder il browser. Esistono molte varianti di questa funzione, personalizzate in base allesigenza. Il parametro pi importante spesso la scadenza. Nellesempio qui sopra va espressa in minuti perch loggetto Datelavora con i millisecondi e noi moltiplichiamo la variabile last per 60.000. Se volessimo lavorare usando le settimane (quale unit di tempo) baster scrivere
expires.setTime(now.getTime()+(parseInt(last) * 7*24*60*60*1000)) ;

poich 7*24*60*60*1000 sono i millisecondi corrispondenti ad una settimana (7 giorni per 24 ore per 60 minuti per 60 secondi per 1000 millisecondi). In questo modo potremo usare la nostra funzione assegnando il valore value = 1 per creare un cookie che duri una settimana e se durante i test vogliamo che tutti i nostri cookies durino solo pochi minuti, baster cambiare il valore della funzione, senza mettere le mani sul codice che invoca la funzione setCookie(). Buoni biscotti a tutti!