Ir al contenido

Volcar el contenido de la sesión en ASP

En ASP clásico, el objeto Session permite conservar información entre las peticiones de un mismo usuario. Sus valores permanecen disponibles mientras la sesión siga activa, hasta que caduque por inactividad o se cierre mediante Session.Abandon.

Si conocemos la clave de una variable, podemos recuperarla directamente:

Session("nombreVariable")

Cuando desconocemos las claves almacenadas, podemos recorrer la colección Session.Contents para consultar su contenido.

Un bucle For Each permite obtener cada clave de Session.Contents. Para mostrar valores escalares utilizamos Response.Write(), CStr() y Server.HTMLEncode().

Dim clave
Dim valor
For Each clave In Session.Contents
valor = Session.Contents(clave)
If Not IsArray(valor) And Not IsObject(valor) Then
Response.Write(Server.HTMLEncode(CStr(clave)) & " = ")
Response.Write(Server.HTMLEncode(CStr(valor)) & "<br>")
End If
Next

El operador & concatena cadenas en VBScript. Server.HTMLEncode() evita que los valores dinámicos se interpreten como código HTML al mostrarlos en la página.

Una variable de sesión también puede contener un array. Antes de convertir o mostrar el valor, debemos comprobarlo mediante IsArray().

If IsArray(Session.Contents(clave)) Then
Response.Write("La variable contiene un array.<br>")
End If

Si intentamos convertir directamente un array con CStr(), se producirá un error de incompatibilidad de tipos.

Las funciones LBound() y UBound() devuelven, respectivamente, los índices inferior y superior del array. Podemos usarlas para recorrer todos sus elementos.

Dim indice
Dim datos
datos = Session.Contents(clave)
For indice = LBound(datos) To UBound(datos)
Response.Write(Server.HTMLEncode(CStr(clave)) & "[")
Response.Write(CStr(indice) & "] = ")
Response.Write(Server.HTMLEncode(CStr(datos(indice))) & "<br>")
Next

Este ejemplo supone que los elementos del array pueden convertirse a texto. Si contienen objetos u otros arrays, será necesario tratarlos de forma específica.

El siguiente código recorre todas las variables de Session.Contents, distingue entre valores escalares, arrays y objetos, y muestra la información que puede convertirse a texto.

<%
Dim clave
Dim valor
Dim indice
For Each clave In Session.Contents
valor = Session.Contents(clave)
If IsArray(valor) Then
For indice = LBound(valor) To UBound(valor)
Response.Write(Server.HTMLEncode(CStr(clave)) & "[")
Response.Write(CStr(indice) & "] = ")
Response.Write(Server.HTMLEncode(CStr(valor(indice))) & "<br>")
Next
ElseIf IsObject(valor) Then
Response.Write(Server.HTMLEncode(CStr(clave)) & " = [objeto]<br>")
Else
Response.Write(Server.HTMLEncode(CStr(clave)) & " = ")
Response.Write(Server.HTMLEncode(CStr(valor)) & "<br>")
End If
Next
%>

Volcar el contenido de una sesión puede ser útil durante el desarrollo y la depuración. No conviene utilizar este código en producción si la sesión contiene datos privados, credenciales u otra información sensible.

Foto de Víctor Cuervo

Víctor Cuervo

Programador, Arquitecto IT, álter ego de Línea de Código, amante de las tecnologías, generador de conocimiento y facilitador del aprendizaje.

Descarga el código de Volcar el contenido de la sesión en ASP

Descubre cómo volcar el contenido de la sesión en ASP de forma segura, detectando arrays y objetos, para depurar rápido y evitar errores sin complicaciones.

Descargar código