Potresti inserire in un db ogni visitatore che entra nel portale (controlli nel database, se non ce lo inserisci, se ce aggiorni l'ora), dopo 5 minuti se il visitatore se ne è andato, lo cancelli dal database (potresti inserire un controllo dopo 30 secondi, ma faresti appesantire il tuo sito)
Codice PHP:
@$date = date(YmdHi);
//Inserisco nel database i nuovi visitatori o aggiorno l'ora di quelli gia' presenti
$on = mysql_num_rows(mysql_query("SELECT * FROM online WHERE ip='$ip"));
if ($on>0) {
$update = mysql_query("UPDATE online SET date='$date' WHERE ip='$ip'");
} else {
$insert = mysql_query("INSERT INTO online VALUES ('$ip','$date')");
}
//Cancello dal database i dati piu' vecchi di 5 minuti
$old = mysql_query("SELECT * FROM online");
while ($row = mysql_fetch_assoc($old)) {
$ip_db = $row['ip'];
$date_db = $row['date'];
if ($date_db<($date-5)) {
$delete = mysql_query("DELETE FROM online WHERE ip='$ip_db'");
}
}