Foros del Web » Programando para Internet » ASP Clásico »

Problema con caducidad de sesión

Estas en el tema de Problema con caducidad de sesión en el foro de ASP Clásico en Foros del Web. Hola! Llevo ya unas cuentas horas con un problemilla,que, aunque parecía facil, no he conseguido solucionar.. no se si es que me estoy olvidando de ...
  #1 (permalink)  
Antiguo 25/01/2005, 18:56
 
Fecha de Ingreso: noviembre-2002
Mensajes: 224
Antigüedad: 21 años, 7 meses
Puntos: 1
Problema con caducidad de sesión

Hola!
Llevo ya unas cuentas horas con un problemilla,que, aunque parecía facil, no he conseguido solucionar.. no se si es que me estoy olvidando de algo o qué, el caso es que no funciona.

Se trata de lo siguiente:

En el archivo global.asa, tengo la siguiente subrutina:

Sub session_onStart()
session("SesionExpirada") = "0"
session.timeout = 4
end sub

sub session_onEnd()
Session("SesionExpirada") = ""
end sub

Justo en el momento de abrir una de las páginas del directorio virtual, compruebo que los valores de las variables SesionExpirada y el del timeout sean los que he puesto en Sub Session_OnStart(), y efectivamente son los valores correctos.
Ahora bien, desde esa misma página tengo un link a otra. Esta ultima se mostrará solo si la variable Session("SesionExpirada") sea "0" (la sesion no está caducada), y si no nos redireccionará a otra página que solo informa que la sesion está caducada.

La cuestion es que por mucho que indique el session.timeout, y despues de haber dejado el tiempo suficiente para que la sesion caduque, session("sesionexpirada") sigue teniendo valor 0 cuando deberia tener valor "", puesto que ya ha pasado por Session_onEnd, no?
Esto es lo que no entiendo, puesto que el código está bien y no me da ningun error, per no consigo que funcione.
A ver si alguien pudiera ayudarme..... gracias!!!!!

Última edición por debspain; 25/01/2005 a las 18:58
  #2 (permalink)  
Antiguo 26/01/2005, 03:07
Avatar de Iri
Iri
 
Fecha de Ingreso: septiembre-2003
Ubicación: Madrid
Mensajes: 54
Antigüedad: 20 años, 8 meses
Puntos: 0
Pues no se,doy por sentado que no tienes frames, no? En el session_onend(), en vez de poner Session("SesionExpirada") = "", pon Session("SesionExpirada") .abandom().
Tambien revisa el IISS para ver cuanto tiempo tienes de sesión que sera de 20 min (aunque en realidad debería mandar el timeout). Siento no ser de mas ayuda, suerte.
__________________
irina.exe
  #3 (permalink)  
Antiguo 26/01/2005, 07:51
 
Fecha de Ingreso: noviembre-2002
Mensajes: 224
Antigüedad: 21 años, 7 meses
Puntos: 1
hola! gracias por contestar Iri!
Pues no, no tengo ni un frame, y me parece muy extraño que a pesar de darle un valor al session.timeout, no me haga ni caso....
Si alguien pudiera ayudarme lo agradecería mucho!! gracias otra vez!
  #4 (permalink)  
Antiguo 26/01/2005, 17:06
 
Fecha de Ingreso: noviembre-2002
Mensajes: 224
Antigüedad: 21 años, 7 meses
Puntos: 1
nadie tiene idea de lo que puede estar pasando?? graciass
  #5 (permalink)  
Antiguo 26/01/2005, 17:27
 
Fecha de Ingreso: mayo-2004
Mensajes: 183
Antigüedad: 20 años
Puntos: 0
Solo una sugerencia, por que no colocas un boton de logoff, y ese metodo invoque una asp, que haga lo siguiente.

session.abandon 'con esto borras todas tus variables.
y luego lo rediriges a la pagina de logon.

Aqui asi le hacemos.
  #6 (permalink)  
Antiguo 26/01/2005, 17:39
 
Fecha de Ingreso: noviembre-2002
Mensajes: 224
Antigüedad: 21 años, 7 meses
Puntos: 1
holaa!
pues es ya tengo un boton de logOut, y precisamente en la empresa me piden hacer esto otro porque queremos que cuando la sesion haya caducado, todas las paginas a las que entren les dirija a una pagina de : "Su sesion ha caducado. Vuelva a iniciar sesion".
Y no se hacerlo de otra manera... pero asi no sale.

He leido por internet varios post de gente que le pasa lo mismo que a mi, que aunque tengan indicado el sesion.timeout, la sesion no caduca nunca... parece que no pase por el Sesion_onEnd(), aunque si lo hace por el Session_onstart().... y no consigo entender por qué...

¿Conoces/is alguna forma alternativa para hacer esto?
Gracias!
  #7 (permalink)  
Antiguo 26/01/2005, 17:57
 
Fecha de Ingreso: mayo-2004
Mensajes: 183
Antigüedad: 20 años
Puntos: 0
Mira en todas nuestras paginas colocamos esta sentencia al principio(en tu caso)

if Session("SesionExpirada") = "" then
Response.Redirect("../ErrPage/Mensaje.asp?ErrMessage=Session No inicializada or Expirada.")
End If

Con esto consigues que nadie entre a las paginas sin primero estar logeado.

en la pagina mensaje.asp, colocamos que direccione a la pagina de logon.asp

Lo que no entiendo es por que no se limpia esa variable, si aqui hacemos eso mismo aqui, y si funciona.

Última edición por masterboy6666; 26/01/2005 a las 17:59
  #8 (permalink)  
Antiguo 26/01/2005, 17:58
 
Fecha de Ingreso: mayo-2004
Mensajes: 183
Antigüedad: 20 años
Puntos: 0
Otra cosa, en el iis, creaste su aplicacion?????
  #9 (permalink)  
Antiguo 27/01/2005, 04:02
 
Fecha de Ingreso: enero-2005
Mensajes: 5
Antigüedad: 19 años, 4 meses
Puntos: 0
Hola a todos,

Yo tuve ese problema con el servidor brinkster, al cabo de un momento se me expiraban las sesiones y todo estaba bien programado. La unica solucion que tendras sera pasar en todas las paginas una cadena que por ejemplo se llame ssid, la pasas como querystring. Esa ssid al hacer el login, en la base de datos, has almacenado en el campo de ese usuario un numero aleatorio de 20 o 30 digitos, mejor combinar con letras y numeros. Entonces pasas esa cadena por todas las paginas y en caso de desconectarse, con un if, haces una comprobacion en la bd, y reconectas al usuario que tenga esa cadena de 30 digitos. Es lo peor si tenias toda la web hecha ya, pero yo lo tengo cvlaro, la siguiente que haga, sera toda con sesiones pasadas por cadena.

Espero haberte ayudado,

Un saludo y suerte!!
  #10 (permalink)  
Antiguo 27/01/2005, 05:46
 
Fecha de Ingreso: diciembre-2004
Ubicación: argentina
Mensajes: 14
Antigüedad: 19 años, 5 meses
Puntos: 0
Hola , yo tambien estoy teniendo problemas con sessio_onend.Necesito que cuando termina la sesion se ejecuten acciones y probe poner en una pagina.asp session.abandon, la cual sea llamada por otra. El tema es que algo de lo que se encuentra en session_onend funciona pero otras cosas no. Les paso el codigo haber si alguien me puede dar una mano:

Les explico algo mas: necesito guardar cuando termina la sesion el tiempo que duro la misma, pero el problema al llamar a guardar.asp en session_onend no funciona,Como podria hacer para llamar guardar.asp el usuario abandona la session????
aca les paso el codigo para que lo miren, desde ya muchas gracias

<script language="vbscript" runat="server">

sub Application_OnStart()
application ("conectados") = 0
end sub


sub Session_OnStart()

application.lock
application ("conectados") = application ("conectados") + 1
application.unlock

Session("hora_inicial")= Time

end sub


sub Session_OnEnd()

application.lock
application ("conectados") = application ("conectados") - 1
application.unlock

Session("hora_actual")= Time

pagina="guardar.asp" 'Esto no funciona
response.redirect pagina 'Esto no funciona



end sub

</SCRIPT>

En guardar.asp resto Session("hora_actual")= Time - Session("hora_inicial")= Time y lo almaceno en la base de datos.
  #11 (permalink)  
Antiguo 27/01/2005, 07:29
 
Fecha de Ingreso: noviembre-2002
Mensajes: 224
Antigüedad: 21 años, 7 meses
Puntos: 1
hola!
gracias por contestar!

A ver, en primer lugar, si cree un directorio virtual para la aplicacion, con su global.asa. Respecto a vuestras respuestas, resulta que el caso es diferente, es decir, el problema no es provocar el abandono de sesión del usuario con un session.abandon, sinó que simplemente quiero detectar que la sesion ha expirado, y el gran problema es que mi sesion nunca expira, por mas que le puse un session.timeout, etc, etc.. No sesi es que estça utilizando un valor predeterminado de 20 minutos o que.. pero es que por mas que lo pruebe, no expira nunca...

Si se os ocurre algo de lo que puede provocar esto plis que lo diga.....
Gracias otra vez!
  #12 (permalink)  
Antiguo 11/07/2005, 10:12
 
Fecha de Ingreso: mayo-2004
Mensajes: 45
Antigüedad: 20 años, 1 mes
Puntos: 0
Una cosa que me funciona es al comienzo de tus paginas asp:

<% Response.Expires = 4 %>

O el valor en minutos que desees. Si pones "-1" la sesión expira al valor por defecto configurado en el IIS, pero de esta forma puedes hacer que la pagina caduque en el tiempo deseado.


Sino prueba a poner lo que tenías en el ASA

<% Session.Timeout = 4 %>

pero en el encabezado de las paginas ASP, en lugar del global.asa

__________________
Et lux in tenebris lucet...
s.f.wil
  #13 (permalink)  
Antiguo 31/07/2005, 08:36
 
Fecha de Ingreso: julio-2005
Mensajes: 4
Antigüedad: 18 años, 10 meses
Puntos: 0
tengo este codigo, espero les ayude....

..........................
<%

IF session("caja") <> "" AND session("hoy") <> "" THEN
on error resume next
Set conn= Server.CreateObject("adodb.connection")
....aqui va otro codigo despues del if----

ELSE
RESPONSE.WRITE " <p align=" & chr(34) & "center" & chr(34) & "><b><font color=" & chr(34) & "#800080" & chr(34) & " size=" & chr(34) & "5" & chr(34) & ">LA SESION <br> "
RESPONSE.WRITE " HA CADUCADO <br> "
RESPONSE.WRITE " POR FAVOR, CIERRE <br> "
RESPONSE.WRITE " LA VENTANA ACTUAL <br> "
RESPONSE.WRITE " E INGRESE NUEVAMENTE</font></b></p> "
END IF
%>

si mi sesion caduca, me pide reingresar... en el IIS le doy el tiempo de caducidad de la sesion.
  #14 (permalink)  
Antiguo 31/07/2005, 08:38
 
Fecha de Ingreso: julio-2005
Mensajes: 4
Antigüedad: 18 años, 10 meses
Puntos: 0
obiamente
IF session("caja") <> "" AND session("hoy") <> "" THEN
caja y hoy vienen de otras paginas moviendo valores, antes de grabar, verifico que no haya caducado la sesion, si no caduca manipulo la db, si caduca sale de la pàgina.
  #15 (permalink)  
Antiguo 24/04/2008, 17:04
 
Fecha de Ingreso: abril-2008
Mensajes: 1
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Problema con caducidad de sesión

Hola yo tengo una duda no se como usar la session.
Lo que quiero hacer es crear la session y en un tiempo determinado que me diga que se caduco
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:56.