Если вы используете переменные сеанса, то пользователь в сети, если last_activity + session_expiry> current_date. В противном случае сеанс уже истек и он не подключен к сети.
Теперь все зависит от того, что люди смогут делать с этой функцией «кто онлайн». Вы можете предпочесть более консервативную меру, чтобы повысить достоверность активности пользователя.
Но, учитывая природу сети, не существует надежного способа обеспечить пользователя действительно активным и активным на вашем сайте, если не требовать время от времени взаимодействия с пользователем, но это будет раздражать.