так опять же, закрыв браузер - пользователя никто никуда не переправит! его ник так и будет висеть "онлайн".
мне кажется, что в online.php должна быть проверка времени не для текущего пользователя, а для всех пользователей! мол берем первую строку таблицы "онлайн", проверяем время, если больше 15 минут - удаляем строку. и так каждую строку по очереди. и так со всем строками.
рассмотрим ситуацию: вы зашли в чат, написали сообщение в 18:00 и занялись своими делами. через 10 минут всплывает окно, мол "вы в режиме "отошел" ". ну вы не долго думав закрыли браузер. ваш ник до сих пор висит у всех пользователей в "онлайне".
еще через 5 минут У МЕНЯ запускается online.php, из таблицы "online" берется ВАША строка, сверяем время с текущим. разница больше 15 минут. удаляется ВАША запись из таблицы "online" и div. для всех пользователей вы уже "оффлайн".
далее ВЫ снова заходите в чат, происходит проверка на наличие вашей записи в таблице "онлайн". ну и так как ее нет - вас перекидывает на страницу авторизации.
значит необходимо добавить: таймер на перекидывание через 15 минут на страницу авторизации (для случаев, если вы НЕ закрыли браузер, а просто ничего не делаете в чате);