Devi usare il database, hai diverse possibilità, ad esempio:
1) crei una tabella nella quale viene inserito l'id o il nome utente di chi esegue il login, così li puoi leggere e mostrare a chiunque sia sul sito
2) aggiungi alla tabella degli utenti un campo booleano che setti a 1 quando l'utente effettua il login, in questo modo leggendo questo campo hai l'elenco dei loggati (quelli con valore 1)
In entrambi i casi devi gestire il logout (facile) oppure il caso in cui un utente lascia il sito senza effettuare il logout.
Nel secondo caso è abbastanza complicato, comunque non gestibile in tempo reale, hai anche qui diverse possibilità:
una è quella di mettere nella tabella degli utenti o in quella descritta al punto 1) un campo timestamp che aggiorni ogni volta che l'utente effettua una qualche operazione sul sito, di tanto in tanto controlli questi timestamp e per quelli più vecchi di un tot di tempo a tua scelta rimuovi la entry se hai scelto la soluzione 1) oppure metti a 0 il campo booleano se hai scelto la soluzione 2)
Il tot di tempo deve essere scelto in base a come prevedi che sia usato il sito, se sai che un utente può stare molto tempo su una stessa pagina senza fare niente, magari perché c'è un testo lungo oppure un video da guardare, potresti impostarlo a 15/20 minuti, se invece è un sito che prevede molte interazioni potresti pensare ad un intervallo più breve.
Chiaramente ci sono altre soluzioni, ma l'idea è questa.