DimkaDimka сказал:а как отследить, что пользователь вышел из чата не нажимая на кнопку exit?
Никак, он будет в чате, пока сессия не закончится, то есть, пока пользователь не закроет браузер.
Единственный вариант - это записывать время входа пользователя и отслеживать его активность, если сообщений в течении часа не было, то принудительно убирать запись о нем из таблицы пользователей.
DimkaDimka сказал:и еще: при обновлении страницы index.php в таблицу online добавляется еще одна запись с этим ником. видимо нужно проводить проверку, что в таблице online еще нет этого ника?
Верно.
DimkaDimka сказал:получается, что при создании сессии нужно тоже проверять, что этого ника нет в таблице?
Верно.
DimkaDimka сказал:как вывести на экран, что ник уже занят?
Перенаправлять на скрипт login.php?no=hanut и в самом скрипте проверять переменную $_GET['no'] в которой можно писать занятое имя. Благодаря передаче имени можно вывести текст вида: "Пользователь hanut уже зарегистрирован в чате. Смените имя подключения.".