Actualizarea cookie-urilor în JavaScript

Actualizarea actuală a unui cookie este ușor diferită de înlocuirea unui cookie, prin faptul că noua valoare pe care dorim să o plasăm în modul cookie depinde într-un fel de modul în care cookie-ul există deja și, dacă da, de ceea ce conține. Aceasta înseamnă că trebuie să citim cookie-ul existent înainte de a putea scrie un înlocuitor pentru acesta.

Un lucru de remarcat este că atunci când citim un cookie nu avem cum să spunem când cookie-ul existent trebuie să expire sau dacă cookie-ul este restricționat la un folder specific sau disponibil pe întregul domeniu. Trebuie să setați o nouă perioadă de păstrare atunci când înlocuiți cookie-ul și trebuie să urmăriți ce domeniu doriți să aibă cookie-ul în paginile dvs., astfel încât să aplicați același domeniu sau opțiune de cale de fiecare dată. Singurul lucru pe care îl puteți citi efectiv la actualizare, în loc să înlocuiți un cookie este valoarea reală a datelor stocate în modul cookie.

În acest exemplu, vom folosi un cookie numit „accesscount” pentru a număra de câte ori vizitatorul nostru a accesat pagina noastră în care nu au trecut mai mult de șapte zile între vizite. În cazul în care trec mai mult de șapte zile între vizite, cookie-ul va expira și următoarea vizită va reporni începând de la zero. Folosim funcțiile allCookies () și writeCookie () din exemplele anterioare, astfel încât singura bucată de cod nou de care avem nevoie pentru a efectua actualizarea este în ultimele două rânduri.

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


retur cr;
;
writeCookie = funcție (nume, valoare, zile, opțiune)
var dt, expiră, opțiune;
if (zile)
dt = Data nouă ();
dt.setTime (dt.getTime () + (zile * 60 * 24 * 60 * 1000));
expiră = "; expiră =" + dt.toGMTString ();
else expiră = ";
if (optează)
if ('/' = substr (opt, 0,1)) option = "; path =" + opt;
else option = "; domain =" + opt;
else option = ";
document.cookie = cname + "=" + cvalue + expiră + opțiunea;

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