Galletitas (Cookies)
|
Una galleta es un elemento de una lista que se guarda en el fichero cookies.txt en el ordenador del visitante. Cada elemento de esa lista tiene dos campos obligatorios: el nombre y su valor; y uno opcional: la fecha de caducidad. Este último campo sirve para establecer la fecha en la que se borrará la galleta. Tiene este formato:
nombre=valor;[expires=caducidad;]
Sólo el servidor que ha enviado al usuario una determinada cookie puede consultarla. Cada galleta tiene un tamaño máximo de 4 Kb y puede haber un máximo de 300 cookies en el disco duro. Si no especificamos la fecha de caducidad la galleta se borrará del disco duro del usuario en cuanto éste cierre el navegador.
Para poder hacer algo con cookies deberemos programar dos funciones: una que se encargue de mandar una galleta al usuario y otra que consulte su contenido.
function mandarGalleta(nombre, valor, caducidad) {
document.cookie = nombre + "=" + escape(valor)
+ ((caducidad == null) ? "" : ("; expires=" + caducidad.toGMTString()))
}
Con esta función mandamos una galleta. Vemos que el valor es codificado por medio de la función escape y que la caducidad (en caso de decidir ponerla) debe ser convertida a formato GMT. Esto se hace mediante el metodo toGMTString() del objeto Date.
function consultarGalleta(nombre) {
var buscamos = nombre + "=";
if (document.cookie.length > 0) {
i = document.cookie.indexOf(buscamos);
if (i != -1) {
i += buscamos.length;
j = document.cookie.indexOf(";", i);
if (j == -1)
j = document.cookie.length;
return unescape(document.cookie.substring(i,j));
}
}
}
Declaramos la variable buscamos que contiene el nombre de la galleta que queremos buscar más el igual que se escribe justo después de cada nombre, para que así no encontremos por error un valor o una subcadena de otro nombre que sea igual al nombre de la galleta que buscamos. Una vez encontrada extraemos la subcadena que hay entre el igual que separa el nombre y el valor y el punto y coma con que termina dicho valor.
Vamos a ver un ejemplo. Utilizaremos
una galleta llamada VisitasAlCursoDeJavaScript para guardar el número
de veces que has visitado este curso:
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- Se usan los comentarios para esconder el código a navegadores sin JavaScript
function Contador() {
var fecha=new Date (99, 12, 31); // La fecha de caducidad es 31 de diciembre del 1999
if (!(num=consultarGalleta("VisitasAlCursoDeJavaScript")))
num = 0;
num++;
mandarGalleta("VisitasAlCursoDeJavaScript", num, fecha);
if (num==1)
document.write("esta es la primera vez que lees este capítulo.");
else {
document.write("has visitado este curso "+num+" veces.");
}
}
// -->
</SCRIPT>
</HEAD>
<BODY>
Por lo que veo,
<SCRIPT LANGUAGE="JavaScript">
<!--
Contador();
// -->
</SCRIPT>
</BODY>
</HTML>
La función consulta el
valor de la galleta incrementandolo y, si no existe, lo pone a uno. Luego
escribe en el documento el número de veces que has visitado el curso.
|
|
Volver
|