Для юзеров:
Создаешь таблицу в бд с названием online
Добавляешь поля id login time
В поле тайм записывается время, В которое произошло последнее обращение к сайту пользователем с ником login.
Если обращение есть, а логина в таблице нету, то идет инсерт. Если после последнего обращения прошло больше определенного времени (например 10 минут (600 секунд)).
Вот так все и работает...