Pregunta

Me gustaría para almacenar la conexión, desconexión y el tiempo de duración de la base de datos.

  • La hora de inicio de sesión se crea cuando el usuario es autenticado (iniciado la sesión correctamente)
  • El tiempo de salida se crea cuando el usuario hace clic en el botón de cierre de sesión
  • La duración es de cierre de sesión - Tiempo de inicio de sesión. (Cierre de sesión menos login)

Pero el problema es, ¿y si el usuario aún no ha haga clic en el botón de cierre de sesión. Estas son las situaciones:

  • la pérdida de Internet
  • Cierre el / pestaña del navegador. (Necesito esto debe usar javascript, pero yo donnu cómo hacerlo, alguna idea?)

EDIT:

Se me olvidó añadir algo a la pregunta, el programa es un programa full flash, no hay navegación a otra página. Sólo 1 página

¿Fue útil?

Solución

No se puede confiar en la recepción de un evento para el usuario cerrar la sesión, si simplemente cierran su navegador, o desaparecen de internet.

En este caso, usted tiene que tener un tiempo de espera de la sesión de algún tipo, y registrar el cierre de sesión cuando su aplicación se da cuenta de su sesión es demasiado viejo.

Si esto es un requisito real, entonces yo diría que necesita una "cron" trabajo de seguimiento de las sesiones de tiempo de espera. Cuando una sesión ha expirado, si la había iniciado la sesión, entonces se registra un evento de "cerrar sesión" para ese usuario.

Tenga en cuenta que no se puede utilizar (por ejemplo) Session_End caso de ASPNET, debido a que no se llamará ya sea de forma fiable (por ejemplo, si el proceso se reinicia el servidor).

Otra opción es añadir el tiempo de salida próxima vez que el usuario inicia sesión en - cuando inician sesión, comprueba si hay sesiones de edad y asume que cualquier que no se cerró prolongó durante una cantidad fija de tiempo transcurrido desde la última visita a la página.

Eso es todo lo que puede hacer.

Otros consejos

Es importante recordar que todas las funciones de sesión / log-in en PHP son general basan en cookies. Por lo tanto, el cambio de la vida de la cookie de sesión debería resolver su problema:

http://us3.php.net /manual/en/function.session-set-cookie-params.php

Además, se pueden establecer las sesiones de PHP por lo que sólo utilizan cookies:

http: // us2 .php.net / manual / es / session.configuration.php # ini.session.use-sólo-cookies

Una vez más, se puede coger el navegador de la ventana / pestaña cerca, pero ... ¿por qué? Por ejemplo es posible que tenga su sitio en varias pestañas abiertas. Si cierro una de estas pestañas debo automáticamente la sesión fuera de su sitio web? Eso es un diseño muy malo. En su lugar, establecer la duración de la sesión por lo que se extingue si el navegador está cerrado y no sólo una ficha. (Tenga en cuenta también que window.unload será cerrar la sesión cuando cualquier ventana en su sitio que cierra -.? Incluyendo una ventana emergente o un iframe ¿De verdad quieres que)

http: //us2.php .NET / manual / es / session.configuration.php # ini.session.cookie-vida

Si desea almacenar el estado de sesión en una base de datos probar cualquiera uno de estos guía . O bien, hágalo usted mismo con session_set_save_handler

En cuanto al cierre del explorador / pestaña, puede enlazar el evento unload (window.onunload, de jQuery $(window).unload(fn) , o cualquier otro) para notificar a su servidor. Una solución propósito más general sería hacer ping periódicamente su servidor (por ejemplo, cada 5 minutos), pero podría ser molesto para el usuario, por lo que hacerlo con prudencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top