In ogni pagina memorizzi il momento in cui l'utente ha visitato il sito, con una query del tipo:
Codice PHP:
// supposto che la tabella si chiami 'utenti' e il numero di ognuno sia 'id'...
// memorizzo il timestamp attuale
$sql = "UPDATE utenti SET lastaction=".time()." WHERE id=".$idutente;
mysql_query($sql);
Per selezionare dal database gli utenti che hanno visitato il sito da meno di 5 minuti puoi fare una cosa del genere:
Codice PHP:
// imposto l'intervallo massimo dall'ultima visita affinchè l'utente venga considerato online
$intervallo = 300; // si misura in secondi, quindi 5 minuti sono 5*60 secondi
$ora = time(); // timestamp attuale
// eseguo la query di selezione
$sql = "SELECT * FROM utenti WHERE lastaction>".($ora-$intervallo);
$query = mysql_query($sql);
// ottengo il numero degli utenti online
$totale = mysql_num_rows($query);
echo "Attualmente ci sono ".$totale." utenti online:
";
// estraggo i dati degli utenti online in un array e con un ciclo li mostro
while ($dati = mysql_fetch_array($query)) {
echo $dati['nome'].'
'; // mostro il nome dell'utente
}
Se non hai capito qualche passaggio chiedi pure.