|
HTML en castellano recomienda... |
|
|
Curso de Javascript 1.2
En esta página:
Cookies
Parece más que necesario definir algo que lleva el absurdo nombre de
cookie (literalmente: galletita). Al parecer, en Estados Unidos (ignoro si
también en Gran Bretaña) reciben ese nombre las fichas que dan en los guardarropas
a modo de resguardo. Y es un símil bastante acertado de lo que son en realidad
las cookies cuando hablamos de Internet.
Una cookie es un elemento de una lista que se guarda 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 una tiene un tamaño máximo de 4 Kb y puede haber un máximo de
300 cookies en el disco duro. Cada servidor podrá almacenar como mucho 20
galletas en el fichero cookies.txt (en el caso de
usar Netscape) o en el directorio cookies (si
utilizamos Explorer) del usuario. Si no especificamos la fecha de caducidad
la "galleta" se borrará del disco duro del usuario en cuanto éste cierre el
navegador.
Funciones básicas
Para poder hacer algo con cookies deberemos programar dos funciones: una
que se encargue de mandar una cookie 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 cookie 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 cookie 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.
Un ejemplo: el contador individualizado
Vamos a ver un ejemplo. Utilizaremos una galleta llamada
VisitasAlCursoDeJavaScript para guardar el número
de veces que has visitado este curso:
cookies.txt
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- Comentario para esconder el código a navegadores sin JavaScript
function Contador() {
var fecha=new Date (2004, 12, 31);
// La fecha de caducidad es 31 de diciembre del 2004
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 cookie incrementandolo y, si no existe,
lo pone a uno. Luego escribe en el documento el número de veces que has visitado
el curso. Y, por lo que veo,
|