Cookies bijwerken in JavaScript

Het daadwerkelijk bijwerken van een cookie is iets anders dan alleen het vervangen van een cookie, omdat de nieuwe waarde die we in de cookie willen plaatsen, op een of andere manier afhankelijk is van of de cookie al bestaat en zo ja, van wat deze bevat. Dit betekent dat we de bestaande cookie moeten lezen voordat we er een vervanging voor kunnen schrijven.

Een ding om op te merken is dat we bij het lezen van een cookie niet weten wanneer de bestaande cookie vervalt of dat de cookie beperkt is tot een specifieke map of beschikbaar is in het hele domein. U moet een nieuwe bewaartermijn instellen wanneer u de cookie vervangt en moet bijhouden welk bereik u de cookie op uw pagina's wilt hebben om elke keer hetzelfde domein of dezelfde padoptie toe te passen. Het enige dat u daadwerkelijk kunt lezen tijdens het bijwerken in plaats van alleen een cookie te vervangen, is de werkelijke waarde van de gegevens die in de cookie zijn opgeslagen.

In dit voorbeeld gaan we een cookie met de naam 'accesscount' gebruiken om het aantal keren te tellen dat onze bezoeker onze pagina heeft bezocht waar niet meer dan zeven dagen zijn verstreken tussen bezoeken. Als er meer dan zeven dagen verstrijken tussen bezoeken, vervalt de cookie en begint het volgende bezoek opnieuw vanaf nul. We gebruiken de functies allCookies () en writeCookie () uit de vorige voorbeelden, dus het enige stukje nieuwe code dat we nodig hebben om de update daadwerkelijk uit te voeren, is in de laatste twee regels.

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


terugkeer cr;
;
writeCookie = function (cname, cvalue, dagen, opt)
var dt, verloopt, optie;
if (dagen)
dt = nieuwe datum ();
dt.setTime (dt.getTime () + (dagen * 24 * 60 * 60 * 1000));
expires = "; expires =" + dt.toGMTString ();
anders verloopt = ";
if (opt)
if ('/' = substr (opt, 0,1)) option = "; path =" + opt;
else option = "; domain =" + opt;
anders optie = ";
document.cookie = cname + "=" + waarde + vervalt + optie;

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