Foros del Web » Programando para Internet » PHP »

Desconectar estado de usuario al cerrar navegador

Estas en el tema de Desconectar estado de usuario al cerrar navegador en el foro de PHP en Foros del Web. Hola a la gente de forosdelweb. Tengo una web donde se registran usuarios y cada uno tiene su perfil de usuario. Al entrar por sesion ...
  #1 (permalink)  
Antiguo 12/03/2012, 11:47
 
Fecha de Ingreso: febrero-2012
Mensajes: 12
Antigüedad: 12 años, 2 meses
Puntos: 0
Desconectar estado de usuario al cerrar navegador

Hola a la gente de forosdelweb.

Tengo una web donde se registran usuarios y cada uno tiene su perfil de usuario.

Al entrar por sesion el estado del usuario se pone online por medio de update en mysql

Al cerrar sesion por logout se pone el estado en offline hasta hay todo bien.

Pero si el usuario cierra el navegador sin cerrar sesion el estado esta aun en online, pero la sesion se cierra porque al pasar 10 minutos se cierra la sesion de un usuario.

Como haria para poner el estado a offline al cerrar el navegador con la sesion iniciada?

Saludos!
  #2 (permalink)  
Antiguo 12/03/2012, 12:04
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Desconectar estado de usuario al cerrar navegador

No es algo sencillo y se ha hablado mucho. En mi opinión, lo mejor que puedes hacer es que la sesión del usuario marque en la bd cada x minutos que está conectado, escribiendo en una tabla el último timestamp. Luego, al verificar los conectados, tomar aquellos cuyo timestamp no exceda los x minutos de diferencia.

O bien, puedes tratar con el evento onbeforeunload() de javascript, invocar mediante ajax una función que marque al usuario offline, pero no es segura esta ejecución.
  #3 (permalink)  
Antiguo 12/03/2012, 12:08
 
Fecha de Ingreso: febrero-2012
Mensajes: 12
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Desconectar estado de usuario al cerrar navegador

Cita:
Iniciado por ocp001a Ver Mensaje
No es algo sencillo y se ha hablado mucho. En mi opinión, lo mejor que puedes hacer es que la sesión del usuario marque en la bd cada x minutos que está conectado, escribiendo en una tabla el último timestamp. Luego, al verificar los conectados, tomar aquellos cuyo timestamp no exceda los x minutos de diferencia.

O bien, puedes tratar con el evento onbeforeunload() de javascript, invocar mediante ajax una función que marque al usuario offline, pero no es segura esta ejecución.
Gracias ocp001a, la primera opcion con timestamp estaria bien comparando el tiempo de entrada en una columna del usuario y al pasar 10 minutos de la sesion cerrada pasar el estado a offline.

Pero un ejemplo como seria?

Disculpa la pregunta.

Saludos!
  #4 (permalink)  
Antiguo 12/03/2012, 12:21
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Desconectar estado de usuario al cerrar navegador

Mira, cada x minutos guardaría en una tabla el tiempo actual (time())

Código PHP:
Ver original
  1. $t=time();
  2. mysql_query("update usuarios set online=$t where id='$iduser'");


luego, cuando quieras mostrar los usuarios en linea;

Código PHP:
Ver original
  1. $t=time()-$x*60;//$x=cantidad de minutos para considerar al usuario ofline
  2.  
  3. $enlinea=mysql_num_rows(mysql_query("select id from usuarios where online >$t"));
  4.  
  5. echo "Hay $enlinea usuarios en linea";

Etiquetas: cerrar, desconectar, estado, mysql, navegador, 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 07:46.