Aggiornamento dei cookie in JavaScript

In realtà l'aggiornamento di un cookie è leggermente diverso dalla semplice sostituzione di un cookie in quanto il nuovo valore che vogliamo inserire nel cookie dipende in qualche modo dall'esistenza del cookie e, in caso affermativo, da ciò che contiene. Ciò significa che dobbiamo leggere il cookie esistente prima di poter scrivere un sostituto per esso.

Una cosa da notare è che quando leggiamo un cookie non abbiamo modo di sapere quando il cookie esistente deve scadere o se il cookie è limitato a una cartella specifica o disponibile nell'intero dominio. È necessario impostare un nuovo periodo di conservazione quando si sostituisce il cookie e è necessario tenere traccia dell'ambito che si desidera che il cookie abbia all'interno delle proprie pagine in modo da applicare ogni volta lo stesso dominio o la stessa opzione di percorso. L'unica cosa che sei effettivamente in grado di leggere durante l'aggiornamento piuttosto che semplicemente sostituire un cookie è il valore effettivo dei dati memorizzati nel cookie.

In questo esempio, utilizzeremo un cookie denominato "accesscount" per contare il numero di volte in cui il nostro visitatore ha avuto accesso alla nostra pagina in cui non sono trascorsi più di sette giorni tra le visite. Se tra le visite trascorrono più di sette giorni, il cookie scadrà e la visita successiva riprenderà a contare da zero. Stiamo usando le funzioni allCookies () e writeCookie () dagli esempi precedenti, quindi l'unico pezzo di nuovo codice di cui abbiamo bisogno per fare effettivamente l'aggiornamento è nelle ultime due righe.

var cookie;
allCookies = function ()
var cr, ck, cv;
cr = []; if (document.cookie! = ")
ck = document.cookie.split (';');
per (var i = ck.length - 1; i> = 0; i--)
cv = ck.split ('=');
cr [ck [0]] = ck [1];


ritorno cr;
;
writeCookie = function (cname, cvalue, days, opt)
var dt, scade, opzione;
if (giorni)
dt = new Date ();
dt.setTime (dt.getTime () + (giorni * 24 * 60 * 60 * 1000));
expires = "; expires =" + dt.toGMTString ();
else expires = ";
if (opt)
if ('/' = substr (opt, 0,1)) opzione = "; percorso =" + opt;
else option = "; domain =" + opt;
else option = ";
document.cookie = cname + "=" + cvalue + expires + option;

cookie = allCookies ();
if (cookie.accesscount! = null) writeCookie ('mycookie', cookie.accesscount + 1,7);
else writeCookie ('mycookie', 1,7);