Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/02/2006, 08:27
zaqpz
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Lo puedes hacer así: en la tabla donde guardo los nombres de usuarios con sus datos, agrego un campo que lo puedes llamar "online" de tipo entero, en el que guardarás un timestamp.
En ese campo cada vez que un usuario abre una nueva pagina de nuestro sistema, actualizo ese timestamp viejo con el timestamp actual. Algo asi:

Código PHP:
<?php
$ultimo_clic
=time();
mysql_query("UPDATE usuarios SET online='$ultimo_clic' WHERE usuario='$nombre_usuario'");
// Suponiendo que $nombre_usuario es el nombre de nuestro usuario actual
?>
Lo que logras con esto es guardar el la base el tiempo en segundos de la última pagina que el usuario visitó dentro de nuestro sitio.

Ahora que ya tienes el ultimo clic de cada usuario, para mostrar quienes estan activos en X momento, primero debes establecerte cual es el rango de tiempo admisible para tomar a un usuario como activo. Yo por lo general tomo como activos a los usuarios cuyo "ultimo clic" fue hace 5 minutos o menos. En este caso lo podrias hacer así:

Código PHP:
<?php
// Seteo el tiempo en segundos de hace 5 minutos
$tiempo_pasado=time()-300;
/* Establezco que la consulta me seleccione a aquellos usuarios cuyo 
"tiempo de ultimo clic" sea mayor o igual al $tiempo_pasado (5 minutos) */
$consulta="SELECT nombre_usuario FROM usuarios WHERE online>='$tiempo_pasado'";
$result=mysql_query($orden);
// Mostramos los nombres de esos usuarios (los activos)
while($row=mysql_fetch_row($result)) echo $row[0];
?>
Bueno, espero haber sido claro y que te resulte útil.

Saludos.
__________________
R4DS en español | R4DS en inglés

Última edición por zaqpz; 19/02/2006 a las 08:54