Yo saqué por ahí un script que sirve para saber cuantos usuarios activos hay en una página.Es este:
Código PHP:
<?
////////////////////////////////////////////
//USUARIOS ACTIVOS
//Calcula el numero de usuarios activos
////////////////////////////////////////////
function usuarios_activos()
{
global $link;
//permitimos el uso de la variable portadora del numero ip en nuestra funcion
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
elseif (isset($_SERVER['HTTP_VIA'])) {
$ip = $_SERVER['HTTP_VIA'];
}
else (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
//definimos el momento actual
$ahora = time();
//actualizamos la tabla
//borrando los registros de las ip inactivas (10 minutos)
$limite = $ahora-10*60;
$ssql = "delete from activeUser where timestamp < ".$limite;
mysql_query($ssql,$link);
//miramos si el ip del visitante existe en nuestra tabla
$ssql = "select ip, timestamp from activeUser where ip = '$ip'";
$result = mysql_query($ssql,$link);
//si existe actualizamos el campo timestamp
if (mysql_num_rows($result) != 0) $ssql = "update activeUser set timestamp = ".$ahora." where ip = '$ip'";
//si no existe insertamos el registro correspondiente a la nueva sesion
else $ssql = "insert into activeUser (ip, timestamp) values ('$ip', $ahora)";
//ejecutamos la sentencia sql
mysql_query($ssql,$link);
//calculamos el numero de sesiones
$ssql = "select ip from activeUser";
$result = mysql_query($ssql,$link);
$usuarios = mysql_num_rows($result);
//liberamos memoria
mysql_free_result($result);
//devolvemos el resultado
return $usuarios;
}
?>
Esto serviría para todos los usuarios. la base de datos (en este caso activeUser) utiliza dos campos, uno es el ip y otro es timestamp. Podrías poner otro campo de tipo booleano que indicase si es usuario o no y en vez de guardar su ip guardas su nombre de usuario (que podrás sacar de la session o de la cookie dependiendo de como se guardan los datos del usuario cuando se loguea). En vez de ip pon de nombre al campo el término "usuario" porque así quedará más claro.
Es resumen:
compruebas si es usuario........si lo es guardas en la base de datos su nombre de usuario, el timestamp y pones a 1 (por ejemplo) el campo donde indicas que es usuario.
Si no lo es guardas la ip , el timestamp y pones a cero el otro campo. El resto ya lo hace el script.