Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/04/2015, 10:02
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: como que cuando cierre el navegador se desconecte el usuario

Lo que te menciona @jpint es correcto pero no es la solución.
La idea de desloguearse en el evento beforeunload esta bien, pero no es suficiente.

¿Que pasaría si el usuario se desconecta de internet y luego cierra el navegador, se conecta de nuevo y lo abre otra vez?

NUNCA confies en nada que dependa en alguna medida del usuario.

Lo que se hace en estos casos es usar una suerte de timeout en el servidor, en la base de datos, dentro de tu tabla de usuarios, agregas un campo datetime que se llame "ultima_actividad", cuando el usuario se loguea guardas en ese campo la fecha actual, y luego cada vez que el usuario interactua con el servidor, actualizas ese campo con la nueva fecha.

Cada vez que un usuario solicita algo, verificas que la diferencia entre la fecha actual y la de la "ultima_actividad" sea menor a un valor definido en el timeout, por ejemplo 3 minutos, si un usuario pasa 3 minutos sin hacer nada deberá volver a loguearse.

Para evitar que sea molesto tener que loguearse cada 3 minutos suponiendo que no sea un sitio muy interactivo, lo que puedes hacer es cada 1 minuto desde javascript hacer una petición asincronica para evitar que expire el timeout del servidor.

Tambien puedes ponerle fecha de expiracion a las cookies y a la session pero bueno, que se respeten dichas fechas depende exclusivamente del usuario y como ya mencione, no se puede confiar en eso.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios