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

Como detectar cuando termina las Session y redirigir o otra página

Estas en el tema de Como detectar cuando termina las Session y redirigir o otra página en el foro de ASP Clásico en Foros del Web. Tengo el siguiente problema, quiero que en una página de mi sitio, los usarios que esten inactivos durante el tiempo que yo determine que debe ...
  #1 (permalink)  
Antiguo 17/02/2012, 10:01
Avatar de Rappa  
Fecha de Ingreso: noviembre-2011
Ubicación: Montevideo, Uruguay
Mensajes: 80
Antigüedad: 12 años, 5 meses
Puntos: 13
Como detectar cuando termina las Session y redirigir o otra página

Tengo el siguiente problema, quiero que en una página de mi sitio, los usarios que esten inactivos durante el tiempo que yo determine que debe durar la session, sean dirigidos a la pagina inicial.

Lo que he hecho:

En la página en cuestión, tengo el siguiente código que establece el timeout de la session:

Código ASP:
Ver original
  1. <%Session.TimeOut=5%>


Por otro lado, una funcion JS recurrente que cada 3 minutos ajecuta una consulta ajax para determinar si la session sigue abierta:

Código Javascript:
Ver original
  1. function refrescar(){
  2.     $.ajax({
  3.         url: 'ajax_sessionActiva.asp',
  4.         cache: false,
  5.         async: false,
  6.         success: function(respuesta){
  7.             if(respuesta=='NO'){
  8.                 window.location.href = "index.asp";
  9.             }
  10.         },
  11.         error: function(){
  12.             alert("Error en ajax");
  13.         }
  14.     });
  15.     setTimeout("refrescar();",180000);//chequea cada 3 minutos
  16. }

El problema es que la session parece nunca terminar y temo que sea la consulta ajax la que la refresque. Es posible? Hay otra manera de lograrlo?
__________________
Drugs and alcohol are not the answer
Unless you are asking what i'm doing this weekend
  #2 (permalink)  
Antiguo 17/02/2012, 12:11
 
Fecha de Ingreso: agosto-2011
Mensajes: 68
Antigüedad: 12 años, 7 meses
Puntos: 11
Respuesta: Como detectar cuando termina las Session y redirigir o otra página

Hola,

Cada vez que "refrescas" una página, efectivamente las variables session se "renuevan".

Una solución sencilla es por ejemplo que definas una session al iniciar sesión un usuario:

session("logged")=true

y para comprobar si la sesión ha caducado, en cada página al inicio del código has de incluir:

if not session("logged") then
response.redirect("Error_sesion.asp")
End if

No se si me he explicado como el culo...
  #3 (permalink)  
Antiguo 17/02/2012, 12:57
Avatar de Rappa  
Fecha de Ingreso: noviembre-2011
Ubicación: Montevideo, Uruguay
Mensajes: 80
Antigüedad: 12 años, 5 meses
Puntos: 13
Respuesta: Como detectar cuando termina las Session y redirigir o otra página

Claro, pero qué pasa si quiero que sin cambiar de pagina, al terminar la session (por tiempo) me envie e la pagina que quiero?
__________________
Drugs and alcohol are not the answer
Unless you are asking what i'm doing this weekend
  #4 (permalink)  
Antiguo 18/02/2012, 04:37
 
Fecha de Ingreso: agosto-2011
Mensajes: 68
Antigüedad: 12 años, 7 meses
Puntos: 11
Respuesta: Como detectar cuando termina las Session y redirigir o otra página

ufff... pues es jodido... porque cada vez que recargas cualquier asp, se renuevan las session...

Yo lo que suelo hacer es incluir una comprobación al inicio de cada página. Si la sesión ha caducado, les redirijo a una página en concreto.

Pero claro, eso ocurre cuando clickan un enlace, no de forma automática.

Lo que tú quieres no se me ocurre cómo, a no ser que pongas el timeout < que la recarga de la página.
  #5 (permalink)  
Antiguo 19/02/2012, 13:13
Avatar de Rappa  
Fecha de Ingreso: noviembre-2011
Ubicación: Montevideo, Uruguay
Mensajes: 80
Antigüedad: 12 años, 5 meses
Puntos: 13
De acuerdo Respuesta: Como detectar cuando termina las Session y redirigir o otra página

Ya solucioné el problema, lo explico por si a alguien le sirve:

Lo hice con javascript, programé una función recurrente que se ejecuta una vez por segundo y le resta 1 unidad a la variable global que definí a tales efectos y si ese valor llega a cero, redirije a la pagina que deseo.

Luego al <body> le agregué una llamada a otra función cuando se dispara el evento onMouseOver que vuelve el valor de la variable global al valor inicial.

De esta manera logro que el contador siga corriendo solamente si la pagina no esta siendo usada.

Código Javascript:
Ver original
  1. window.tiempoRestante = 120 //2 minutos
  2.  
  3. function contador(){
  4.      window.tiempoRestante--;//saco 1 segundo
  5.      if(tiempoRestante==0){
  6.           window.location.href="otrapagina.html"; //redirecciono
  7.      }else{
  8.           setTimeOut("contador();",1000);//recursion en 1 segundo
  9.      }
  10. }
  11.  
  12. function hayActividad(){
  13.      window.tiempoRestante=120;//reinicio a 2 minutos
  14. }


Código HTML:
Ver original
  1. ...
  2. <body onMouseOver="hayActividad();">
  3. ...

y listo, cumplió con lo que yo necesitaba
__________________
Drugs and alcohol are not the answer
Unless you are asking what i'm doing this weekend

Etiquetas: página, redirigir, session
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 12:30.