| ||||
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 |
| ||||
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 ) |
| ||||
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 |
| ||||
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 |
| ||||
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: |