![]() |
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 = 4end 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. :no: A ver si alguien pudiera ayudarme..... gracias!!!!! :adios: |
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. |
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! |
nadie tiene idea de lo que puede estar pasando?? graciass |
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. |
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! |
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. |
Otra cosa, en el iis, creaste su aplicacion????? |
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!! |
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. |
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! :adios: |
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 :adios: |
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. |
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. |
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 :'( |
| La zona horaria es GMT -6. Ahora son las 09:01. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.