Artículos
ASP

Acceder a las cookies con ASP

Creado: 02/Oct/2009 Actualizado: 27/Ago/2021

Las cookies son ficheros de información que van dejando las páginas web. En dicha información podemos encontrar múltiples cosas, unas veces información legible, otras encriptada, pero siempre relativa al usuario.

Solamente podremos acceder a cookies que hayan sido generadas en nuestro dominio. Es decir, nunca podremos acceder a la información de cookies de otra página web desde la nuestra. Es por ello que es un mecanismo con limitaciones de seguridad.

Si queremos acceder a las cookies con ASP lo primero que debemos de hacer es acceder a la colección que contiene las mismas. Esta colección se encuentra en el objeto Request y se llama Cookies. Debido a que la información sobre las cookies nos viene almacenada en una colección podemos aprovechar la secuencia de control for-each para recorrer dicha colección.

for each item in Request.Cookies
 ...
next

Las cookies pueden ser de dos tipos. Aquellas que solo tengan un par nombre/valor o las que sean una colección de pares nombre/valor. En el primer caso, el sencillo, nos valdrá con indicar el nombre de la cookie para obtener su valor.

for each item in Request.Cookies
    Response.Write "

" + item + ":" + Request.Cookies(item) + "

" next

En los casos de que la cookie almacene un conjunto de parejas clave/atributo y si queremos desglosar esta información podemos utilizar el método .HasKeys el cual nos dice si la información es un valor o un conjunto de parejas clave/atributo.

Si no utilizamos el método .HasKeys nos devolverá información del tipo:

NORMAL=blue&ACTIVO=red&VISITADO=red

Si queremos desglosar esta información, volvemos a utilizar una estructura for-each:

for each item in Request.Cookies
  if Request.Cookies(item).HasKeys then
    'La cookie es una colección
    Response.Write("

La cookie " + item + " tiene un conjuno de parejas clave/atributo.") for each subitem in Request.Cookies(item) Response.Write "
" + subitem + ":" + Request.Cookies(item)(subitem) next Response.Write("

") end if next

Si no tenemos cookies generadas en nuestro servidor, para poder ejecutar este ejemplo puedes generar cookies al principio del fichero. Para ello utilizamos el objeto Response y su colección Cookies de la siguiente forma:

<%
  'Mandamos una serie de cookies para probar el ejemplo
  Response.Cookies("musicaPreferida") = "pop"
  Response.Cookies("peliculaPreferida") = "Espartaco"
  Response.Cookies("musicaPreferida").expires = "12/12/2009"  

  Response.Cookies("enlace")("normal") = "blue"
  Response.Cookies("enlace")("visitado") = "red"
  Response.Cookies("enlace")("activo") = "red"
  
%>


Artículos
ASP

Acceder a una base de datos con ASP

Creado: 01/Oct/2009 Actualizado: 22/Jun/2014

El objetivo de este ejemplo es ver como realizar una consulta sobre una base de datos y sacar los resultados. En este ejemplo utilizaremos ASP y nos apoyaremos en la estructura ADODB.RecordSet. Los pasos a seguir son los siguientes:

1. Debemos de conectarnos a la base de datos. Para ello utilizaremos un objeto ADODB.Connection al cual deberemos de especificar la localización de la base de datos. Bien mediante la dirección relativa de la misma o bien utilizando una cadena DSN. Una vez especificada la dirección de la Base de Datos deberemos de abrirla (open).

Set db = Server.CreateObject("ADODB.Connection")
Dim DB_CONNECTIONSTRING
DB_CONNECTIONSTRING = "Driver={Microsoft Access Driver (*.mdb)};
Dbq=" & Server.MapPath("prueba.mdb") & ";"
db.open DB_CONNECTIONSTRING

2. Para realizar la consulta tendremos que utilizar un objeto ADODB.RecordSet al cual indicaremos la sentencia SQL que realiza la consulta.

set rs = Server.CreateObject("ADODB.Recordset")
SQLStr = "SELECT * FROM Datos" 
rs.open SQLStr,DB_CONNECTIONSTRING,adOpenStatic,adLockReadOnly,adCmdText

La consulta SQL podrá ser tan compleja como la queramos realizar (podemo usar clausulas ORDER BY, GROUP BY, IN, LIKE, BETWEEN,…)

3. Una vez tenemos el RecordSet (conjunto de registros a mostrar) deberemos de recorrerle. Para recorrer el RecordSet iremos moviendo el puntero que apunta a cada una de las filas, siempre y cuando existan filas en la tabla. Para poder llevar a cabo esta operación nos valdremos de una bucle while.

do while not rs_preguntas.EOF
     ..
     Response.Write(rs("valor"))
     rs.MoveNext 
     ..
loop

Para acceder a un campo en concreto de la fila a la que estamos apuntando tendremos que indicar el nombre del RecordSet y entre parentesis y entrecomillado el nombre del campo (o la posición que ocupa en su defecto). En nuestro ejemplo vemos que el campo de la tabla se llama valor.

Tenemos que tener en cuenta que dentro del bucle debemos de ir moviendo el puntero que apunta a las fila (si no nos queremos quedar en un bucle infinito). La función que realiza esto sobre el RecordSet es MoveNext.

4. Finalmente deberemos de cerrar tanto el RecordSet como la conexión a la base de datos.

rs.close
db.close