Ver Mensaje Individual
  #5 (permalink)  
Antiguo 14/08/2004, 22:12
Avatar de Manoloweb
Manoloweb
 
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Hay varios metodos para lograr eso.

La mayoría de ellos contemplan sesiones y base de datos.

Lo ideal es que pasen esta pregunta a PHP para que el foro sea el adecuado.

Todo dependerá de que tanta información adicional quieres tener de cada usuario, pero algo muy simple sería esto:

Crear una tabla que se llame, por ejemplo uonline

fechahora|session|usuario|pagina


Estoy asumiendo que ya tienes cierto control sobre tus usuarios, por ejemplo, que ya tienes forma de saber el nombre del usuario que esta navegando (o "invitado" cuando no esta logueado).

Luego, en cada pagina, haces un par de queries a la BD:

1.- DELETE FROM uonline where fechahora<(now()-INTERVAL 10 MINUTE) or session='$ID_Sesion'

(con esa te aseguras de eliminar tanto las sesiones expiradas como el registro anterior de el usuario actual)

2.- INSERT INTO uonline (fechahora,session,usuario,pagina) values (now(),$ID_sesion,$nombreUsuario,'articulos')

(con esta creas un registro para indicar donde se encuentra el usuario actual)


Ahora si, ya tienes grabados a todos los usuarios que estan en linea en los ultimos 10 minutos.

Ya solo falta correr el query para saber cuantos hay...

REGISTRADOS: SELECT count(*) FROM uonline WHERE usuario!='invitado'

INVITADOS: SELECT count(*) FROM uonline WHERE usuario='invitado'

Listo!!!


Bueno, puede ser que algo le haga falta, pues se me ha ocurrido así al vuelo, pero es al menos algo por donde empezar.

__________________
Manoloweb