Foros del Web » Programando para Internet » PHP »

usuarios online en sistema de registros

Estas en el tema de usuarios online en sistema de registros en el foro de PHP en Foros del Web. que tal e creado un sistema de registros e ingreso de usuarios con php y MySQL, kiero que en mi sistema me muestre en una ...
  #1 (permalink)  
Antiguo 11/11/2010, 12:46
Avatar de alekandero  
Fecha de Ingreso: noviembre-2010
Ubicación: Piura
Mensajes: 4
Antigüedad: 13 años, 5 meses
Puntos: 0
Busqueda usuarios online en sistema de registros

que tal e creado un sistema de registros e ingreso de usuarios con php y MySQL, kiero que en mi sistema me muestre en una parte de la web kienes estan conectados y kienes no, entonces ise esto cree un nuevo valor en la tabla de usuarios de mi base de datos que see llama "online_user" y en el sistema ise esto cuando el usuario se loguee o ingrese le mande el valor 1 a "online_user" y cuando el user se desloguee mande el valor 0 a "online_user" luego ise un ncodigo donde me mande los nombres de todos los usuarios que tienen el valor 1 en "online_user", hasta ai todo bien pero tengo un problema que pasa si es usuario no se desconecta y solo cierra el navegador o apaga su pc, en este caso el usuario no estara mas en el sistema pero en la base de datos aparecera con el balor 1 osea estara como conectado, alguien me puede ayudar con esto no importa si tengo que usar javascript o ajax
  #2 (permalink)  
Antiguo 11/11/2010, 15:40
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: usuarios online en sistema de registros

que tal verificando las variables de sesion..
esas variables tienen un tiempo de expiracion si no existe actualizar elvalor
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #3 (permalink)  
Antiguo 11/11/2010, 20:32
Avatar de alekandero  
Fecha de Ingreso: noviembre-2010
Ubicación: Piura
Mensajes: 4
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: usuarios online en sistema de registros

si eso kise hacer pero lo que pasa es que cuando el usuario cierra el navegador ya no se ejecuta el archivo php :S solo verifica la variable de session cuando el usuario hace alguna accion ( va a alguna seccion de la web )
  #4 (permalink)  
Antiguo 11/11/2010, 21:43
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: usuarios online en sistema de registros

Ese es un buen problema. Me parece que no existe un método realmente satisfactorio para resolverlo, pero a mí se me ocurre algo que sería una aproximación a la resolución.

A parte de tu campo online_user creas otro campo, un campo datetime, en el que se guarde la fecha y hora de la última petición, o sea, cada vez que se recargue la página y continue logueado el usuario se actualizará ese campo con la fecha y hora presente. Bien, ahora programa un scritp PHP en un archivo, mediante una consulta SQL se cambiará el valor del campo online_user a cero en el caso de que al comparar la fecha y hora actual con la fecha y hora del registro se obtenga un número de minutos igual o mayor al tiempo en que expira la sesión cuando ya no hay actividad. Eso está determinado por la configuración de PHP, no sé cuanto será por lo general ese tiempo, pero bien podrías averiguarlo.

Todo esto se puede hacer con una sola sentencia sql, sería algo así:

UPDATE users SET online_user = 0 WHERE MINUTE(TIMEDIFF(NOW(), online_time)) >= 10 AND online_user = 1

Obviamente online_time viene a ser este campo donde se guarda el fecha y hora. Bien, ya está, ahora lo que queda es ejecutar ese archivo periódicamente. Lo cual es tarea del cronjob. Programas un cronjob para que ejecute ese archivo PHP cada 5 minutos por ejemplo, bueno, el tiempo que tú quieras. en caso de que no sepas como configurar un crojob aquí tienes una página donde se explica como hacer eso:

http://directorio.efxto.com/blog/35-...-un-script-php

Te recomiendo la última opción donde no envía el e-mail de aviso de la ejecución de la tarea, sino tu bandeja de entrada se llenaría muy rápido. A no ser que abras una cuenta especialmente para eso.

Bueno, eso sería todo. Creo que es una solución algo complicada e inexacta, pero no veo otra opción. Suerte.

Última edición por ElJavista; 12/11/2010 a las 07:34
  #5 (permalink)  
Antiguo 15/11/2010, 09:44
Avatar de alekandero  
Fecha de Ingreso: noviembre-2010
Ubicación: Piura
Mensajes: 4
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: usuarios online en sistema de registros

voy a probar que tal me va con los crob jab, pero creo que debe aver otra solucion, como los foros phpbb que te muestran que usuarios estan conectados o no
  #6 (permalink)  
Antiguo 15/11/2010, 16:56
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: usuarios online en sistema de registros

No sé si existirá otra solución, pero ponte a pensar. La idea es ejecutar un script ya sea PHP o ajax al salir de la página. El problema está en que cómo reconoce que estás navegando dentro de la misma página o si se cierra la ventana? Cuando se navega de página en página en el mismo sitio se ejecuta el evento onunload en cada página de la que se sale. OK, pero en ese caso no debe detectarse ningún cierre de sesión. Si se cierra la ventana sin más ni más entonces igual se ejecuta en esa página el evento onunload, no hay diferencia, pero en ese caso si se debe registrar el cierre de una sesión. La pregunta es, cómo detectar la diferencia? Si alguien lo sabe, me avisa, yo no puedo.

De poderse detectar esa diferencia se podría programar una función ajax con el evento onunload, el único problema es que como se cierra la página no se terminará de ejecutar la función que registre el cambio de sesión en la base de datos, o sea de nada sirve. No obstante, si se ejecuta un alert en el final de la función ajax pues si funcionaría, pero mostraría un odioso alert diciendo "Esto cerrará la sesión" o cualquier otro mensaje que quieras. También podría aparecer mostrarse un confirm preguntando si se desea cerrar la sesión, pero como antes se ha cerrado se debería ejecutar otra función ajax que renueve la sesión.

OK, estas dos cosas se podrían implementar, pero el problema sigue siendo el mismo, cómo detecto que alguien simplemente está navegando sobre el mismo sitio o si alguien cerró la ventana. O peor aún, cómo detecto si alguien ha salido del sitio para entrar a otro sin cerrar la ventana, o sea, en la misma pestaña? No creo que haya solución a eso, pero si la hay, me avisan por favor.

Última edición por ElJavista; 17/11/2010 a las 07:39

Etiquetas: online, registros, usuarios, sitemap
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:29.