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.
Recorrer las variables de sesión
Sección titulada «Recorrer las variables de sesión»Un bucle For Each permite obtener cada clave de Session.Contents. Para mostrar valores escalares utilizamos Response.Write(), CStr() y Server.HTMLEncode().
Dim claveDim 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 IfNextEl 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.
Detectar valores de tipo array
Sección titulada «Detectar valores de tipo array»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 IfSi intentamos convertir directamente un array con CStr(), se producirá un error de incompatibilidad de tipos.
Recorrer los elementos del array
Sección titulada «Recorrer los elementos del array»Las funciones LBound() y UBound() devuelven, respectivamente, los índices inferior y superior del array. Podemos usarlas para recorrer todos sus elementos.
Dim indiceDim 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>")NextEste ejemplo supone que los elementos del array pueden convertirse a texto. Si contienen objetos u otros arrays, será necesario tratarlos de forma específica.
Ejemplo completo
Sección titulada «Ejemplo completo»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 claveDim valorDim 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 IfNext%>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.
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.