Más sobre cookies

  • Por
Veamos unas notas adicionales sobre el uso de cookies, como crear colecciones y subcolecciones de ellas y cómo realizar listados genéricos.
Ya hemos visto en el manual básico de ASP un capítulo dedicado a las cookies, que sería adecuado repasar para tener la base necesaria para poder entender este nuevo capítulo.

Las cookies están en una colección

Las cookies se guardan en una colección, al igual que muchas otras cosas en ASP. Podríamos acceder a todas las cookies de una página a través del bucle For Each.

<%
response.cookies ("id") = "Pepe"
response.cookies ("idioma") = "ing"
response.cookies ("color") = "verde"

cadena = ""
for each galleta in Request.cookies
   cadena = cadena & "Cookie " & galleta & ": " & Request.cookies(galleta) & "<br>"
next
response.write cadena
%>


En este ejemplo primero creamos unas cookies y luego hacemos un recorrido en la colección de cookies para mostrar su valor. Los valores de intermedios se guardan en una variable cadena por que es aconsejable no escribir nada en la página hasta no haber realizado todo el trabajo con las cookies. Una vez recorrido toda la colección se muestra la variable cadena en la página, que contiene todas las cookies de la página.

Probablemente te muestren una cookie más aparte de las que se acaban de crear, que es una cookie que se guarda en desarrolloweb para conservar la personalización del color que introdujo el usuario. Puedes ver este ejemplo.

Subclasificación de cookies

Para continuar, vamos a ver cómo se puede meter en una cookie un mayor número de datos a través de la subclasificación. Donde antes creabamos una cookie ahora aprenderemos a crear una subcolección de cookies.

<%
Response.cookies ("usuario")("id") = "eugim"
Response.cookies ("usuario")("idioma") = "esp"
Response.cookies ("usuario")("color") = "rojo"
%>


Se puede ver este ejemplo en funcionamiento

Si ahora volvemos a ver el listado de las cookies de este web podremos comprobar cómo se almacenan las cookies en una subcolección, con pares nombre=valor.

Bucle anidado para mostrar subcolección

Si deseamos mostrar las subcolecciones de una manera más bonita pondemos hacer un bucle anidado. El bucle más general sería el que va recorriendo las cookies de primer nivel. En cada iteración del bucle se preguntará si la cookie actual tiene subcookies. Si no tiene, escribe la cookie actual y continúa con la siguiente iteración. En caso de que hubiera subcookies, se mete en un bucle que muestra cada una de ellas. El código para hacer esto sería el siguiente.

<%
cadena = ""
for each galleta in request.cookies
   if request.cookies(galleta).HasKeys then
      for each subgalleta in request.cookies(galleta)
         cadena = cadena &"    " & subgalleta & ": " & request.cookies(galleta)(subgalleta) & "<br>"
      next
   else
      cadena = cadena & galleta & ": " & request.cookies(galleta) & "<br>"
   end if
next
response.write cadena
%>


La manera de trabajar con subclasificaciones es muy parecida a la de trabajar con matrices o arrays de 2 dimensiones. Podemos ver el resultado de este script.

Fecha de caducidad programada

Como se dijo en el capítulo de cookies básico, para que las galletitas se guarden en el ordenado una vez acabada la sesión durante un tiempo, hay que ponerles fecha de caducidad. Es muy útil ponerle una fecha de caducidad relativa a la fecha actual, por ejemplo 1 año más tarde, así cuando pase un tiempo, la página guardará las cookies más adelante en el tiempo también. Para ello vamos a utilizar una función de fecha que se llama DateAdd() y funciona conforme a este esquema.

DateAdd(intervalo, numero, fecha)

Intervalo es un string que reprenta las unidades sobre las que vas a añadir a la fecha. Por ejemplo meses se indica con "m", años con "yyyy", días con "d".
Numero se utiliza para indicar cuantos intervalos se añaden, 1 año, o 8 meses por ejemplo.
Fecha es la fecha a partir de la cual se añade el número de intervalos. Se suele utilizar en este parámetro la palabra Now que indica que se tome la fecha actual.

<%
response.cookies("id").expires = DateAdd("d",1,Now)
%>


En el ejemplo, la cookie caducaría en un día despué.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir