Foros del Web » Programando para Internet » Javascript »

Tiempo de inactividad

Estas en el tema de Tiempo de inactividad en el foro de Javascript en Foros del Web. Hola amigos! les escribo en esta oportunidad por el siguiente problemita: Cómo calculo el tiempo de inactividad de una sesión? Para esto encontré: que al ...
  #1 (permalink)  
Antiguo 09/01/2008, 10:48
Avatar de arwen_1  
Fecha de Ingreso: diciembre-2006
Mensajes: 81
Antigüedad: 17 años, 5 meses
Puntos: 0
Pregunta Tiempo de inactividad

Hola amigos! les escribo en esta oportunidad por el siguiente problemita:

Cómo calculo el tiempo de inactividad de una sesión?


Para esto encontré: que al iniciar sesión un usuario cree la fecha y hora actual; entonces cuando vaya a entrar a una página verifico que la diferencia entre la hora actual y la hora en la que inició sesión sea menor o igual al tiempo que yo tenga en una variable X.

ahora, esa verificación la haría cuando entra a la página, pero además de esa deseo que si esta inactivo y mueve el cursor lo envie a iniciar sesión, para asi evitar que por ejmplo, rellene un formulario y darle insertar sea cuando lo envie a iniciar sesión.

en caso de no poderse hacer lo que pido, cuando el cursor sea movido luego de un tiempo de inactividad.

Cómo se haría para redireccionar al formulario con la información que ya el usuario habia ingresado luego de haber iniciado sesión nuevamente?


tal y como lo hacen uds en éste foro.

Esperando su pronta ayuda.

  #2 (permalink)  
Antiguo 09/01/2008, 11:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Tiempo de inactividad

Hola arwen_1,

La forma mas correcta de hacer esto, es usar un iframe oculto o una peticion en AJAX que mientras este en el formulario se llame a si misma cada minuto, asi refrescas la sesion y mantienes abierta la comunicacion si el formulario es muy grande.

Saludos.
  #3 (permalink)  
Antiguo 09/01/2008, 13:17
Avatar de arwen_1  
Fecha de Ingreso: diciembre-2006
Mensajes: 81
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Tiempo de inactividad

hmm pero con esa solucion entonces no importaria el tiempo que el usuario tiene abierto el formulario no? y si es asi, no es la idea.

ya que deseo justamente limitar que tenga acceso a una pagina (no necesariamente sera un formulario) si tiene mas de X tiempo de inactividad.
  #4 (permalink)  
Antiguo 09/01/2008, 13:21
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 6 meses
Puntos: 17
Re: Tiempo de inactividad

No he entendido muy bien la pregunta.

¿Quieres que no pueda estar en una determinada página más de X tiempo?

Si es esto, sólo con PHP no se podría, una posible solución es usar AJAX y que vaya comprobando si se ha pasado el tiempo (como te han apuntado antes).

También podrías hacerlo con JavaScript, llevando un contador cuando se carga la página y, si llega al final, hacer una redirección.

Pero vamos, no he entendido muy bien lo que quieres hacer.
  #5 (permalink)  
Antiguo 09/01/2008, 15:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Tiempo de inactividad

Asi es, si quieres limitar el tiempo tienes que hacerlo con Javascript, al inicio de tu script, lo que haces es iniciar un contador y si esta inactivo por mas de X tiempo redireccionas a un login, etc.

Saludos.
  #6 (permalink)  
Antiguo 10/01/2008, 13:43
Avatar de arwen_1  
Fecha de Ingreso: diciembre-2006
Mensajes: 81
Antigüedad: 17 años, 5 meses
Puntos: 0
Exclamación Re: Tiempo de inactividad

Ok, disculpen que no me haya expresado bien

quiero es saber si un usuario no ha movido el cursor por 5 minutos o si no ha escrito algo en la pagina. es decir si ha estado inactivo.

por ejemplo, en el messenger, si no estas en la pc y por lo tanto no has movido ni el cursor o escrito en algun lugar, automaticamente te coloca un estado Inactivo.

con que finalidad?

a modo de seguridad, si un usuario pasa mas de 5 minutos sin hacer nada en la pag, es decir que el usuario "se fue" entonces al intentar hacer algo debe pedir la contraseña nuevamente.

el codigo que he implementado es que un usuario no dure mas de 5 minutos en una pagina. es decir: tengo un formulario y me he tardado mas de X minutos llenandolo, como he superado el tiempo pre-establecido al hacer un refresh de la pagina me envia a introducir la contrseña.

es parecido a lo que quiero con el detalle: que yo he tardado mas de X minutos pero OJO he estado trabajando en la pag. se entiende?

la idea es que me vuelva a pedir la contraseña si no he trabajado en dicha hoja por mas de X cantidad de tiempo.

espero haberme explicado mejor y q puedan ayudarme :)
  #7 (permalink)  
Antiguo 10/01/2008, 13:49
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 6 meses
Puntos: 17
Re: Tiempo de inactividad

Eso debería ser con JavaScript, no creo que haya un evento para mover el ratón, pero puedes controlar los eventos que estén relacionados con elementos de la página (formularios y demás), cuando se detecte algún cambio en esos elementos (ya sea que cogen el foco, que lo pierden, que se teclea algo, que se modifican, etc....), reinicias el contador.

Pero eso es JavaScript, deberías preguntarlo por ese subforo, que guiarán mejor, te podrán decir si existe algún evento "global", etc, etc....

Espero que por lo menos te quede más o menos clara la lógica:

- Al cargar la página se pone en marcha un contador.
- Si el contador alcanza un tiempo determinado se redirecciona la página a donde te interese.
- Si se detecta algún tipo de evento en algún elemento de la página, se reinicia el contador.
  #8 (permalink)  
Antiguo 10/01/2008, 13:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Tiempo de inactividad

De cualquier manera este es un tema de Javascript, no de PHP, ya que PHP no tiene forma de rastrear este "tiempo de inactividad" mas que vía Javascript que le notifique el evento.

Te muevo al foro correspondiente.

Saludos.
  #9 (permalink)  
Antiguo 11/01/2008, 07:42
Avatar de arwen_1  
Fecha de Ingreso: diciembre-2006
Mensajes: 81
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Tiempo de inactividad

pues si! para dar solucion al problema que plantee coloco la funcion que hice en javascritp, donde se calcula la diferencia entre el tiempo actual y el del ultimo acceso

Código HTML:
<script>

	var ult_acceso; 
	
	function mouse_moved()
	{
		var now= new Date()
		var hora_now= now.getTime();
		
		if (ult_acceso!=null)
		{
			var hora_ult_acceso= ult_acceso.getTime();
			var tiempo_transcurrido= (hora_now/1000) - (hora_ult_acceso/1000);
			if(tiempo_transcurrido >= 120) 
			{
				alert("Mucho tiempo inactivo. sorry")
			}
		}
		ult_acceso=new Date();
	}

</script> 
tendremos que usar una varibale global: ult_acceso.

en mi caso, ya que debo enlazar esto con las sesiones de PHP para cerrarla en caso de haber excedido el tiempo, luego del alert: alert("Mucho tiempo inactivo. sorry") hago la redireccion (open(....)) a la pagina de inicio de sesion, y por la url (get) enviarle una bandera.
¿para que?
para que en la pagina de inicio de sesion verifique dicha bandera y si ha sido activada entonces destruya la sesion.


Gracias a los que me dieron ideas sorry por la mala explicacion
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:07.