Mise à jour des cookies en JavaScript

En fait, la mise à jour d'un cookie est légèrement différente du simple remplacement d'un cookie dans la mesure où la nouvelle valeur que nous voulons placer dans le cookie dépend d'une manière ou d'une autre si le cookie existe déjà et, le cas échéant, ce qu'il contient. Cela signifie que nous devons lire le cookie existant avant de pouvoir en écrire un remplacement.

Une chose à noter est que lorsque nous lisons un cookie, nous n'avons aucun moyen de savoir quand le cookie existant doit expirer ou si le cookie est limité à un dossier spécifique ou disponible sur l'ensemble du domaine. Vous devez définir une nouvelle période de conservation lorsque vous remplacez le cookie et devez garder une trace de l'étendue que vous souhaitez que le cookie ait dans vos pages afin d'appliquer à chaque fois le même domaine ou option de chemin. La seule chose que vous pouvez réellement lire lors de la mise à jour plutôt que de simplement remplacer un cookie est la valeur réelle des données stockées dans le cookie.

Dans cet exemple, nous allons utiliser un cookie nommé 'accesscount' pour compter le nombre de fois où notre visiteur a accédé à notre page où pas plus de sept jours ne se sont écoulés entre les visites. Si plus de sept jours s'écoulent entre les visites, le cookie expirera et la prochaine visite recommencera à compter de zéro. Nous utilisons les fonctions allCookies () et writeCookie () des exemples précédents, donc le seul morceau de nouveau code dont nous avons besoin pour faire la mise à jour est dans les deux dernières lignes.

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


return cr;
;
writeCookie = fonction (cname, cvalue, days, opt)
var dt, expire, option;
si (jours)
dt = new Date ();
dt.setTime (dt.getTime () + (jours * 24 * 60 * 60 * 1000));
expires = "; expires =" + dt.toGMTString ();
else expires = ";
si (opt)
if ('/' = substr (opt, 0,1)) option = "; path =" + 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);