Objeto Session

Valoración del artículo:
La necesidad y utilidad del método session para transferir variables
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
En los programas que hemos visto hasta ahora, hemos utilizado variables que solo existían en el archivo que era ejecutado. Cuando cargábamos otra página distinta, los valores de estas variables se perdían a menos que nos tomásemos la molestia de pasarlos por la URL o inscribirlos en las cookies o en un formulario para su posterior explotación. Estos métodos, aunque útiles, no son todo lo prácticos que podrían en determinados casos en los que la variable que queremos conservar ha de ser utilizada en varios scripts diferentes y distantes los unos de los otros.

Podríamos pensar que ese problema puede quedar resuelto con las cookies ya que se trata de variables que pueden ser invocadas en cualquier momento. El problema, ya lo hemos dicho, es que las cookies no son aceptadas ni por la totalidad de los usuarios ni por la totalidad de los navegadores lo cual implica que una aplicación que se sirviera de las cookies para pasar variables de un archivo a otro no sería 100% infalible.

Nos resulta pues necesario el poder declarar ciertas variables que puedan ser reutilizadas tantas veces como queramos dentro de una misma sesión. Imaginemos un sitio multilingüe en el que cada vez que queremos imprimir un mensaje en cualquier página necesitamos saber en qué idioma debe hacerse. Podríamos introducir un script identificador de la lengua del navegador en cada uno de los archivos o bien declarar una variable que fuese valida para toda la sesión y que tuviese como valor el idioma reconocido en un primer momento.

Estas variables que son válidas durante una sesión y que luego son "olvidadas" son definidas con el objeto Session de la siguiente forma:

Session("nombre de la variable") = valor de la variable

Una vez definida, la variable Session, será almacenada en memoria y podrá ser empleada en cualquier script del sitio web.

La duración de una sesión viene definida por defecto en 20 minutos. Esto quiere decir que si en 20 minutos no realizamos ninguna acción, el servidor dará por finalizada la sesión y todas las variables Session serán abandonadas. Esta duración puede ser modificada con la propiedad Timeout:

Session.Timeout = n° de minutos que queramos que dure

Una forma de borrar las variables Session sin necesidad de esperara que pase este plazo es a partir del método Abandon:

Session.Abandon

De este modo todas las variables Session serán borradas y la sesión se dará por finalizada. Este método puede resultar practico cuando estemos haciendo pruebas con el script y necesitemos reinicializar las variables.

Lo que se suele hacer es crear un archivo en el que se borran las cookies y se abandona la sesión. Este archivo será ejecutado cuando queramos hacer borrón y cuenta nueva:

<% @ LANGUAGE="VBSCRIPT" %>
<HTML>
<HEAD>
<TITLE>Puesta a cero</TITLE>
</HEAD>
<BODY>
<%
For Each galleta in Response.Cookies
   Galleta=""
Next
Session.Abandon
%>
Borrón y cuenta nueva!!<br>
<a href="url de la página de inicio">Volver al principio</a>
</BODY>
</HTML>

Comentarios
Fueron enviados 9 comentarios al artículo
5 comentarios no revisados
4 comentarios revisados:
Por: Juan Carlos
10/8/02
El objeto session solo se destruye con el metodo Session.Abandon? ¿Cuando se cierra el explorador, no se destruye el objeto session ???

RESPUESTA

El objeto session tiene validez dentro del servidor de ASP. Pero el servidor ASP no se puede dar cuenta de que el explorador se ha cerrado. Tampoco se da cuenta si el explorador se ha ido a otra página, abandonando la nuestra. Así pues, el objeto session también se destruye si la sesión queda inactiva durante un cierto tiempo, por defecto 20 minutos. Si la página permanece inactiva quiere decir que el usuario se ha ido o ha cerrado el explorador.

Ahora bien, si se cierra el explorador, y se vuelve a abrir, accediendo a la misma dirección donde antes teníamos, por ejemplo, algunas variables de sessión activas, éstas se han perdido. Es decir, que si cerramos el explorador y lo volvemos a abrir, se abre una nueva sessión en los sitios donde vayamos pasando. Esto es debido a que las sesiones también están enlazadas con los navegadores por medio de cookies y si cerramos el navegador, se pierden esas cookies y cuando se vuelve a abrir y se abren nuevas sesiones se crean esas cookies, pero se crean nuevas, sin respetar lo que había anteriormente.

Por: Romina
10/1/05
A mí me han dicho y he leído en otras webs de programación que para usar variables de sesión TAMBIEN es necesario que el navegador tenga habilitadas las cookies, que si no las tiene habilitadas el servidor crea un nuevo SessionID en cada petición. Me gustaría que esto se aclare en el artículo ya que muestra como si las sesiones no dependieran del cliente en absoluto.
Por: walter
21/5/05
si tienes una sesion asp.met y ya lo tienes en un directorio virtual y configuras el sitio web predeterminado para que acceda a la carpeta que tiene tu proyecto de asp.net, cuando abres la pagina de asp.net porque no se mantiene la variable session ya que si quiero pasar de una pagina asp.net a otra asp.net la variable session se desparece, ¿Debo configura el web.config o que se supone que pasa con la variable session?
Por: Kein
16/11/06
Hola a todos, mi duda es : ¿si quiero destruir 1 session en particular? ¿qué método tengo que utilizar? porque Session.Abandon destruye absolutamente todas...

Gracias de antemano comunidad Desarrolloweb.com =D

Manuales relacionados
Categorias relacionadas
El autor
Rubén Alvarez
Redactor de DesarrolloWeb.com
http://www.desarrolloweb.com
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Alojados en el grupo