Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Detectar envio de información

Estas en el tema de Detectar envio de información en el foro de Frameworks JS en Foros del Web. Hola a todos. En mi empresa me han pedido que modifique una de las 39834236480732948 aplicaciones web que hay hechas y no se muy bien ...
  #1 (permalink)  
Antiguo 17/05/2012, 09:28
 
Fecha de Ingreso: noviembre-2007
Mensajes: 81
Antigüedad: 17 años
Puntos: 0
Pregunta Detectar envio de información

Hola a todos.

En mi empresa me han pedido que modifique una de las 39834236480732948 aplicaciones web que hay hechas y no se muy bien como abordar el tema... Lo explico un poco.

Me piden que modifique la aplicación para que cuando la sesión este a falta de 1 minuto para caducar, aparezca un mensajito de aviso para que el usuario lo sepa; y si llega a caducar, redirecciono al usuario a la pagina de login.

Mi idea era controlar de algun modo cada petición GET y POST que se hace, ya sea por http o por ajax (cualquier peticion de informacion al servidor) y siempre que se realice alguna peticion, reiniciar un contador de tiempo al tiempo maximo de sesion (en mi caso 8 horas).

El problema es que no puedo detectar este tipo de eventos, o mas bien dicho, no se como detectarlos.

¿Alguien me puede echar una mano, o al menos decirme si esto se puede hacer asi o necesito hacerlo de alguna otra forma?

Un saludo y gracias de antemano a todos.
  #2 (permalink)  
Antiguo 17/05/2012, 10:12
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 8 meses
Puntos: 47
Respuesta: Detectar envio de información

Y no podrias capturar la hora al momento de que el usuario se loguea y hacer cada 1 minuto una llamada con setTimeout a alguna funcion que reste la hora actual - la hora de logueo ? de este modo tendrias en horas digamos la cantidad de tiempo que un usuario lleva logueado, despues pones una condicion que si esa resta es mayor a 7 horas 59 minutos ponele redireccione tu pagina?

Saludos
  #3 (permalink)  
Antiguo 18/05/2012, 00:25
 
Fecha de Ingreso: noviembre-2007
Mensajes: 81
Antigüedad: 17 años
Puntos: 0
Respuesta: Detectar envio de información

El problema de lo que me dices es que no estoy teniendo en cuenta las peticiones del usuario al servidor (las cuales son GET y POST realizados con jQuery).

Cada vez que el usuario realiza una, el tiempo de sesión en el servidor se resetea y vuelve a ponerse a 8 horas. Si hago lo que me dices, pasadas 8 horas desde que el usuario se loguea, me dirá que la sesión está a punto de caducar, aunque el usuario haya estado las 8 horas trabajando.

Mi problema es que no se si, desde jQuery, se puede detectar de alguna forma cada vez que el usuario realice una petición y, ahora si, tener una variable en el javascript que se vuelva aponer a 8 y vaya decreciendo hasta llegar a 0 y avise así al usuario.
  #4 (permalink)  
Antiguo 18/05/2012, 01:33
 
Fecha de Ingreso: abril-2006
Mensajes: 27
Antigüedad: 18 años, 6 meses
Puntos: 6
Respuesta: Detectar envio de información

Cada vez que el usuario realiza una peticion obtiene una respuesta. En esa respuesta puedes incorporar la creacion de un temporizador que "salte" pasadas 7 horas y 59 minutos.
En el caso de una pagina "normal", el anterior temporizador quedaria destruido automaticamente al cargar la nueva pagina de la ultima peticion.
  #5 (permalink)  
Antiguo 18/05/2012, 02:09
 
Fecha de Ingreso: noviembre-2007
Mensajes: 81
Antigüedad: 17 años
Puntos: 0
Respuesta: Detectar envio de información

Cita:
Iniciado por Luis_v Ver Mensaje
Cada vez que el usuario realiza una peticion obtiene una respuesta. En esa respuesta puedes incorporar la creacion de un temporizador que "salte" pasadas 7 horas y 59 minutos.
En el caso de una pagina "normal", el anterior temporizador quedaria destruido automaticamente al cargar la nueva pagina de la ultima peticion.
No esta nada mal tu idea, salvo un pequeño inconveniente... tengo aprox. 150 archivos/paginas, los cuales tendría que modificar o al menos comprobar si hay alguna peticion en el mismo para hacer lo que me comentas... podría tardar demasiado...

Lo suyo es modificar lo menos posible, de ahi insisto en mi idea... de alguna forma "interceptar" cada get o post que se realice desde mi pagina (por jQuery) y resetear el contador...
  #6 (permalink)  
Antiguo 18/05/2012, 11:39
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Detectar envio de información

Si conocer en conjunto tu apicación no se puede dar una respuesta precisa, te doy un esquema probable haciendo una serie de suposiciones

hay una página de loguin que verifica via php+base de datos, al hacer el loguin, registras en un campo la hora de inicio

creas una pagina(controlhora.php)que tenga una consulta a la BD y chequee la hora para ese usuario y que a su vez compare hora actual contra la hora almacenada, generando una respuesta segun sea el caso

creas otra página (controlsesion.php) que a traves de Ajax haga una consulta a controlhora.php y en función de la respuesta muestre un mensaje, la petición por Ajax debería estar en una función que se llame cada un minuto con setInterval()

finalmente, en todas tus páginas, si se inició la sesion, haces un include a controlsesión.php

Lo de hacerlo cada un minuto me parece algo medio exagerado, lo haría cada 5 ó 10.

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 22/05/2012, 05:30
 
Fecha de Ingreso: noviembre-2007
Mensajes: 81
Antigüedad: 17 años
Puntos: 0
Respuesta: Detectar envio de información

Gracias emprear, al final he hecho algo parecido a lo que me has dicho y funciona.

Mi página de login registra en una cookie la hora de inicio de sesión. Despues tengo una única página donde todas las cargas se hacen mediante jQuery, usando la funcion load y cargando el contenido de todas las demás paginas, por lo que he utilizado

$(document).ready(function(){
$(document).bind("ajaxComplete",function(){
reset_cookie();
});
});

con esto detecto todas las peticiones que se hacen al servidor... despues cada 5 minutos compruebo si han pasado 8 horas (duración de mi sesion) desde la hora guardada en la cookie; en tal caso hago un redirect al login.

Etiquetas: jquery
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 14:49.