Objeto de sesión ASP
Un objeto de sesión almacena información o cambia la configuración de una sesión de usuario.
El objeto de sesión
Cuando está trabajando con una aplicación en su computadora, la abre, hace algunos cambios y luego la cierra. Esto es muy parecido a una sesión. La computadora sabe quién eres. Sabe cuándo abres la aplicación y cuándo la cierras. Sin embargo, en Internet hay un problema: el servidor web no sabe quién eres ni qué haces, porque la dirección HTTP no mantiene el estado.
ASP resuelve este problema creando una cookie única para cada usuario. La cookie se envía a la computadora del usuario y contiene información que identifica al usuario. Esta interfaz se denomina objeto de sesión.
El objeto Session almacena información o cambia la configuración de una sesión de usuario.
Las variables almacenadas en un objeto de sesión contienen información sobre un solo usuario y están disponibles para todas las páginas en una aplicación. La información común almacenada en las variables de sesión son el nombre, la identificación y las preferencias. El servidor crea un nuevo objeto de sesión para cada nuevo usuario y destruye el objeto de sesión cuando la sesión caduca.
¿Cuándo comienza una sesión?
Una sesión comienza cuando:
- Un nuevo usuario solicita un archivo ASP y el archivo Global.asa incluye un procedimiento Session_OnStart
- Un valor se almacena en una variable de sesión
- Un usuario solicita un archivo ASP y el archivo Global.asa usa la etiqueta <objeto> para instanciar un objeto con ámbito de sesión
¿Cuándo termina una sesión?
Una sesión finaliza si un usuario no ha solicitado o actualizado una página en la aplicación durante un período específico. De forma predeterminada, son 20 minutos.
Si desea establecer un intervalo de tiempo de espera que sea más corto o más largo que el predeterminado, use la propiedad Tiempo de espera .
El siguiente ejemplo establece un intervalo de tiempo de espera de 5 minutos:
<%
Session.Timeout=5
%>
Utilice el método Abandon para finalizar una sesión inmediatamente:
<%
Session.Abandon
%>
Nota: El principal problema con las sesiones es CUÁNDO deberían terminar. No sabemos si la última solicitud del usuario fue la definitiva o no. Por lo tanto, no sabemos cuánto tiempo debemos mantener la sesión "viva". Esperar demasiado para una sesión inactiva consume recursos en el servidor, pero si la sesión se elimina demasiado pronto, el usuario debe comenzar de nuevo porque el servidor ha eliminado toda la información. ¡Encontrar el intervalo de tiempo de espera correcto puede ser difícil!
Consejo: ¡Almacene solo PEQUEÑAS cantidades de datos en las variables de sesión!
Almacenar y recuperar variables de sesión
Lo más importante del objeto Session es que puedes almacenar variables en él.
El siguiente ejemplo establecerá el nombre de usuario de la variable de sesión en "Pato Donald" y la edad de la variable de sesión en "50":
<%
Session("username")="Donald Duck"
Session("age")=50
%>
Cuando el valor se almacena en una variable de sesión, se puede acceder desde CUALQUIER página en la aplicación ASP:
Welcome <%Response.Write(Session("username"))%>
La línea de arriba devuelve: "Bienvenido Donald Duck".
También puede almacenar las preferencias del usuario en el objeto Sesión y luego acceder a esa preferencia para elegir qué página devolver al usuario.
El siguiente ejemplo especifica una versión de solo texto de la página si el usuario tiene una resolución de pantalla baja:
<%If Session("screenres")="low" Then%>
This is the text version of the page
<%Else%>
This is the multimedia version of the page
<%End If%>
Eliminar variables de sesión
La colección Contents contiene todas las variables de sesión.
Es posible eliminar una variable de sesión con el método Remove.
El siguiente ejemplo elimina la variable de sesión "venta" si el valor de la variable de sesión "edad" es inferior a 18:
<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>
Para eliminar todas las variables en una sesión, use el método RemoveAll:
<%
Session.Contents.RemoveAll()
%>
Bucle a través de la colección de contenidos
La colección Contents contiene todas las variables de sesión. Puede recorrer la colección Contenidos para ver lo que está almacenado en ella:
<%
Session("username")="Donald Duck"
Session("age")=50
dim i
For Each i in Session.Contents
Response.Write(i & "<br>")
Next
%>
Resultado:
username
age
Si no conoce la cantidad de elementos en la colección de contenido, puede usar la propiedad Count:
<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
Response.Write(Session.Contents(i) & "<br>")
Next
%>
Resultado:
Session variables: 2
Donald Duck
50
Bucle a través de la colección StaticObjects
Puede recorrer la colección StaticObjects para ver los valores de todos los objetos almacenados en el objeto Session:
<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br>")
Next
%>