2010-10-04 39 views

Respuesta

4

Es relativamente fácil:

  • Construir un temporizador JavaScript que dispara en (duración de la sesión - 5 min) minutos usando setTimeout

  • Haga que la función setTimeout muestre un cuadro de diálogo de confirmación, p. usando jQuery UI Dialog

  • Si el usuario desea prolongar la sesión, realice una solicitud de Ajax a un archivo PHP. Si el archivo utiliza sesiones, esto funcionará para "tocar" la duración de la sesión

  • Después de realizar la solicitud, configure otro setTimeout que se activará cuando la sesión esté a punto de caducar.

+0

no pensé en la llamada AJAX, muy bien !!! –

+0

https://www.itworld.com/article/2832447/development/how-to-create-a-session-timeout-warning-for-your-web-application-using-jquery.html – Stefan

3

Sugeriría un enfoque diferente; simplemente actualice la sesión para el usuario de todos modos. La mayoría de sesión-muertos no deseados ocurren debido a

  • una larga llamada telefónica
  • una visita inesperada
  • una reunión

y con un diálogo de confirmación, el período de sesiones ya por muerto para el momento de su el usuario regresa, agregando solo confusión.

lugar:

var refresh_session = function() { 
    $.get("/refresh_session.php"); 
}, 

fifteen_minutes = 15 * 60 * 1000; 

setInterval(refresh_session, fifteen_minutes); 

-> usuarios felices! :-)

+0

Esta es una gran opción también, pero necesito que el usuario haga la llamada.es una sesión de 6 minutos, si no hay actividad aún necesito que se desconecten –

+0

Eso es justo :-) Pero probablemente debas hacer tu propio diálogo de confirmación, para que puedas eliminarlo nuevamente cuando se sepa que la sesión está muerta y en su lugar informar al usuario lo que sucedió – Magnar

+0

Parte del tiempo de espera de la sesión es de seguridad, forzar el mantenimiento de la sesión en algunos casos está bien, pero el usuario debería poder optar por eso. Depende de qué tan sensible sea el contenido – kmfk

0

Puede eludir el problema al tener un script que devuelve una imagen de 1x1 píxeles en un temporizador JS. La idea es que comience con un script PHP como este (no estoy seguro si las llamadas de cabecera aquí son exactamente correcto ..):

header("ContentType: image/gif"); 
passthru("my-1x1.gif"); 

Ahora, tiene la función de JavaScript llamada setInterval este script en un intervalo adecuado (es decir, menos que el intervalo de GC de la sesión). Debido a que la imagen se sirve desde PHP, actualiza su sesión, por lo que, en teoría, las sesiones de sus usuarios no terminarán mientras permanezcan en su sitio.

+0

Mantenemos al usuario conectado si están activos, esto solo ocurriría si el usuario está inactivo (como están en el teléfono o algo así), quiere alertar/dar la opción de extender sesión antes de que caduque –

+0

OK, por lo que la alerta aparece después de X minutos diciendo "¿desea extender su sesión?" y el usuario todavía está en el teléfono, y no responde hasta 10 minutos después cuando la sesión ya ha sido GC estaba en el servidor. No creo que tu idea de que el usuario elija sea buena, estás atrapado en un huevo y una gallina. – Robin

Cuestiones relacionadas