Foros del Web » Programando para Internet » PHP »

como que cuando cierre el navegador se desconecte el usuario

Estas en el tema de como que cuando cierre el navegador se desconecte el usuario en el foro de PHP en Foros del Web. como que cuando cierre el navegador se desconecte el usuario , tengo este codigo puedo en el index.php de la pagina para que cuando cierre ...
  #1 (permalink)  
Antiguo 27/04/2015, 09:09
Avatar de skywolker  
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 195
Antigüedad: 13 años, 3 meses
Puntos: 8
Pregunta como que cuando cierre el navegador se desconecte el usuario

como que cuando cierre el navegador se desconecte el usuario , tengo este codigo puedo en el index.php de la pagina para que cuando cierre el navegador me aperezca desconectado podiendo verlo desde otro navegador uso opera o firefox .

Código HTML:
<script language="JavaScript" type="text/javascript">


<!--
 $(window).bind('beforeunload', function(){

   <?php 
	 	mysql_query("update usuarios set conectado='' where usuario='".$_COOKIE['usuario']."' ") or die(mysql_error()); 
  ?>			 

	 return 'Guarden los datos antes de continuar, de lo contrario perderán los cambios';
	 
});


	
//window.onbeforeunload = confirmaSalida;  



//-->
</script> 
Pero no me funciona nose por que nose que estoy haciendo mal.
  #2 (permalink)  
Antiguo 27/04/2015, 09:16
Avatar de jpint  
Fecha de Ingreso: junio-2012
Ubicación: Ciudad Real - España
Mensajes: 97
Antigüedad: 12 años, 5 meses
Puntos: 12
Respuesta: como que cuando cierre el navegador se desconecte el usuario

El código no puede funcionar nunca porque estas mezclando lenguajes de lado cliente y lado servidor erróneamente.

PHP es un lenguaje de lado del servidor, por lo que cuando cargas la URL se ejecuta una unica vez.

JavaScript es un lenguaje de lado cliente (el navegador) y puede ejecutarse las veces que sea necesario mientras el usuario esté en la página.

El evento beforeunload es JS por lo que cuando lo ejecutes ya no tienes conexión con el servidor y el PHP no se va a volver a ejecutar.

Lo que tienes que hacer es llamar al servidor asíncronamente (con AJAX), por ejemplo a otro archivo aparte que haga el UPDATE sql.
  #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, 6 meses
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
  #4 (permalink)  
Antiguo 27/04/2015, 10:38
Avatar de jpint  
Fecha de Ingreso: junio-2012
Ubicación: Ciudad Real - España
Mensajes: 97
Antigüedad: 12 años, 5 meses
Puntos: 12
Respuesta: como que cuando cierre el navegador se desconecte el usuario

Correcto, esa sería una solución definitiva.

Etiquetas: cierre, mysql, navegador, sql, usuario, usuarios
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:14.