Objeto Session
Cuando empecé a pelearme con los lenguajes web (y ya ha llovido desde el 1995), especialmente con el HTML. Una de las mayores inquietudes que teníamos era la de poder tener una misma información durante todas las páginas de nuestra web… y que rabia que daba. Al cachondo que invento el protocolo HTTP ya se le podía haber ocurrido que fuese un protocolo con estado y que guardase la información ente petición y petición, pero no.
La verdad es que con el paso del tiempo a la gente se les fue ocurriendo algunas ideas, como por ejemplo, pasar la información mediante la URL y capturarla con JavaScript.
Y por fin llegaron los SSI de segunda generación (ASP, PHP,,..) – nos perdimos la primera - y que maravillosa idea la de tener un objeto de sesión que nos permitiese mantener la información a un usuario durante toda la visita a nuestra web. Creo que los que más lo agradecieron fueron los diseñadores de tiendas virtuales, y es que el más claro ejemplo del uso de variables de sesión son los “carritos de la compra”, los cuales almacenan los productos seleccionados por los usuarios dentro de nuestra web.
Pues esa es la utilidad del objeto Session. La de almacenar información por cada usuario durante lo que dure su sesión.
Entendemos por sesión desde que el usuario pide una página de nuestra web hasta que la abandona. Para crear una variable de sesión deberemos de hacerlo de la siguiente manera:
Session("mivariable") = valor
Y si queremos acceder al valor de la información lo haremos:
Response.Write ( Session("mivariable"))
Colecciones
Las colecciones que tenemos disponibles dentro del objeto Session son:
.Contents
Esta colección contiene todos los objetos que se han almacenado como variables de sesión. Podemos recorrer esta colección mediante un bucle for each.
Para acceder a un determinado elemento de la colección deberemos de usar su nombre o el identificativo de la posición que ocupa.
Session.Contentes("nombre")
Session.Contentes(id)
.StaticObjects
Contiene una colección de objetos creados mediante <OBJECT> a los cuales se les ha dado un ámbito de sesión.
Atributos
Los atributos que se nos presentan son los siguientes:
.CodePage
Este atributo especifica como están codificadas las cadenas de caracteres dentro de los objetos intrínsecos. La codificación variará dependiendo del lenguaje.
Response.Write(Session.CodePage)
Para más información de los CodePage disponibles se puede consultar la página de Microsoft http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/charsets/charset4.asp
Algunos de ellos:
- 1250 - Central Europeo
- 932 - Japones
.LCID
Este parámetro especifica el formato configurado en el servidor para las fechas, horas y moneda del país.
El parámetro puede ser muy interesante en el caso de que estemos trabajando con un servidor que esté en EEUU. Esto es debido a que manejará las fechas en el formato mm/dd/aa y a nosotros puede ser que nos interese utilizar el formato dd/mm/aa. Entonces lo que tenemos que hacer es cambiar el valor del parámetro LCID
Puedes consultar los valores del LCID en el MSDN de Microsoft
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsmsclcid.asp
Algunos de los valores son:
- 1034 - Español
- 2057 - Reino Unido
- 1033 - Estados Unidos
- 1036 - Francia
.SessionID
El SessionID es el identificador de la sesión. Este es un identificador único generado por el servidor cuando se crear la sesión. Es de tipo LONG.
Response.Write(Session.SessionID)
No se recomienda usar los SessionID como identificadores únicos dentro de las bases de datos. Esto es debido a que si se reinicializa el servidor puede volver a generar SessionID ya generados.
.TimeOut
Mediante esta propiedad podemos modificar el tiempo de duración de las sesiones. Este tiempo es configurado por defecto en el servidor.
El valor hay que especificarlo en minutos:
Session.TimeOut = 7 ‘La sesión durará 7 minutos.
El valor por defecto es el que venga configurado en el servidor. Suele ser, si no se ha tocado nada, 10 minutos.
Métodos
Los métodos que nos ofrece el objeto Session son:
.Abandon
Este método elimina los objetos almacenados en la sesión. Por defecto, el método Abandon es invocado implícitamente cuando se acaba el tiempo de sesión.
Session.Abandon()
Cuando se invoca el método Abandon, los objetos almacenados no se eliminan directamente, sino que pasan a una cola para ser borrados. El borrado de estos objetos se realiza cuando se acaba de procesar el script de la página actual.
.Contents.Remove
Mediante este método podemos eliminar un elemento en concreto de la sesión. Para ello deberemos de especificar el nombre del objeto o el índice que ocupa dentro del array de objetos de sesión. .Contents
Session.Contents.Remove ("nombre")
Session.Contents.Remove (id)