La soluzione è molto semplice... crei una tabella così:
Codice PHP:
CREATE TABLE `user_online` (
`
userchar(100NOT NULL default '',
`
timeint(11NOT NULL default '0'
TYPE=MyISAM
Poi in php il ragionamento è semplice...
all'inizio di ogni pagina metti (scrivo in linguaggio di progetto perchè non mi va ora di scrivere in PHP... ):
codice:
se utente non è in user_onlie allora
 insersici dentro user_online nome utente e data/ora attuli

elimina tutto da user_online solo dove data/ora e distant 5 minuti dalla data/ora attuale

seleziona tutto da user_online e stampa i nomi degli utenti connessi
ovviamente c'è un margine di errore di 5 minuti...