¿Todavía no sabes cómo actualizar cookies en JavaScript?

En realidad, la actualización de una cookie es ligeramente diferente a la simple sustitución de una cookie en el sentido de que el nuevo valor que queremos colocar en la cookie depende de alguna manera de si la cookie ya existe y, en caso afirmativo, de lo que contiene. Esto significa que necesitamos leer la cookie existente antes de poder escribir un reemplazo para ella.

 

Una cosa a tener en cuenta es que cuando leemos una cookie no tenemos forma de saber cuando la cookie existente está a punto de expirar o si la cookie está restringida a una carpeta específica o disponible en todo el dominio.

Usted necesita establecer un nuevo período de retención cuando reemplace la cookie y necesita hacer un seguimiento del alcance que desea que la cookie tenga dentro de sus páginas para aplicar la misma opción de dominio o ruta cada vez. Lo único que realmente puede leer cuando actualiza en lugar de simplemente reemplazar una cookie es el valor real de los datos almacenados en la cookie.

En este ejemplo vamos a utilizar una cookie llamada'accesscount' para contar el número de veces que nuestro visitante ha accedido a nuestra página donde no han transcurrido más de siete días entre visitas. Si transcurren más de siete días entre las visitas, la cookie expirará y la siguiente visita comenzará a contar desde cero. Estamos usando las funciones allCookies() y writeCookie() de los ejemplos anteriores, así que la única pieza de código nuevo que necesitamos para hacer la actualización está en las dos últimas líneas.

 

var cookie;

allCookies = function() {

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];

}

}

return cr;

};

writeCookie = function(cname, cvalue, days,opt) {

var dt, expires, option;

if (days) {

dt = new Date();

dt.setTime(dt.getTime()+(days*24*60*60*1000));

expires = "; expires="+dt.toGMTString();

} else expires = '';

if (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);

(0 votes)