Usuario online/offline

Xav0

Buenos días,

He echo un pequeño código para saber si un usuario está o no esta online, cuando esta online (entra en index.asp) le digo que cambie el campo del usuario "online" a 1.

Bueno, mi intencion es que cuando el usuario abandone la pagina, ese campo pase a ser 0.

Desde el logout lo hace bien, pq llamo a la funcion y modifico el campo.... el problema viene cuando el usuario abandona la pagina por la "X" del explorador, que es imposible controlar esto....

He googleado un poco, hay una solcuion como "trampa" ke es abrir un popup hacer la modificacion a la BD y cerrarlo, pero quien no tiene hoy en dia un antipopup? asi que no sirve.....

Definir un tiempo para ke la variable de session se elimine es otra opcion..... pero no me gustaria que estubiera un usuario leyendo algo en la pagina y de golpe (despues de los minutos definidos) le salte a offline y le haga un logout.....

Así que, si alguien se a encontrado en este caso, si lo ha solucionado me haría un gran favor diciendome como, como puedo saber si el usuario abandona mi página.

Muchas gracias.

suaveSHOW

Puedes hacer esto.

Tabla MySQL: Online
Columnas: userID, time

Cuando el usuario se conecta se crea una fila p.e. (1, d/m/y-h:i).
Cada vez que recarge una pagina se actualiza el campo time con la fecha y hora actual.
Entonces, imaginate que entran los usuarios 1,2,3 al mismo tiempo, se crearían tres filas.
(1, d/m/y-h:i)
(2, d/m/y-h:i)
(3, d/m/y-h:i)

Lo que tienes que hacer es decidir un rango de tiempo para decidir si esta online o no.
Ahora seguido abandona la página el usuario 2, entonces si el usuario 1 y/o 3 recarga la pagina o va a otro lugar recarga la fila donde la userID es la misma que la suya y borra los campos con antigüedad superior a la que tu has establecido, p.e. 5 minutos.

No se si me explique bien, espero que si :) y con esto no hace falta

Xav0

La verdad ke tal como me lo planteas es muy buena idea....

Al leerlo primero he pensado, que en la pagina hay un minichat, entonces si el usuario esta hablando (sale en la lista pq del chat pq esta online) y que si pasa el tiempo se desconectaría.... pero puedo hacer que cuando escriba algo tb se actualice ese campo.....

Muchisimas gracias, me has dado una muy buena idea, t'estoy muy agradecido, la pondre en practica!!

LOc0

Y si quieres (o necesitas) más precisión podrías utilizar AJAX y el evento onbeforeunload para conectar con tu logout.php cuando el usuario cierre el navegador o se pire de la página.

Salu2 ;)

Xav0

#4 con ajax se puede controlar el cierre del navegador? uso asp

suaveSHOW

#5 la función onbeforeunload carga justo cuando vas a cerrar la página.
Has visto alguna vez una página p.e. ebuddy, que al cerrarla te da un aviso tipo "Si cierras la ventana perderás toda la información" y te da la opción de aceptar o cancelar.

Pues puedes usarla para que si el usuario cierre el navegador haga la query de online, elimine la sesion etc.

Espero no equivocarme.

Xav0

Suena interesante, aunke nunca he tocado nada en ajax voy a investigar un poco. Gracias!

Usuarios habituales

  • Xav0
  • suaveSHOW
  • LOc0