Консультация № 69900
07.01.2007, 18:33
0.00 руб.
0 2 2
Здравствуйте, уважаемые эксперты!
Прошу помочь мне в одном вопросе.
Начал писать чат, но только сейчас оознал, что совершенно не знаю, как проверять подключен ли ползователь или нет...
Если у кого либо есть соображения, то, пожалуйста поделитесь.

Обсуждение

Неизвестный
07.01.2007, 19:04
общий
это ответ
Здравствуйте, Uman!

Протокол HTTP не позволяет устанавливать сеансы, поэтому отследить длительность работы посетителя с Web-ресурсом невозможно. Можно зафиксировать лишь время обращения клиента к ресурсам сервера. Но узнать момент прекращения работы с этими ресурсами невозможно.

Могу предложить использовать такую схему - если со стороны пользователя не было обращения к Web-страницам Вашего чата в течение какого-то времени (например, 30 минут), значит, он покинул ресурс. Для отслеживания времени обращения Ваших посетителей Вы можете использовать сессии.

Если Вы собираетесь использовать MySQL для хранения информации, создайте таблицу, где будете хранить сессии. В ней должно быть такие поля: идентификатор сессии, имя посетителя, время последнего обращения к ресурсам.

Предположим, у нас есть таблица sessions с полями id_session, user и last_action. Код в приложении – написал самое основное, с остальным, думаю, разберетесь.

Удачи!


Приложение:
<?php//Начинаем сессиюsession_start();//Получаем уникальный идентификатор сессии$id_session = session_id();/* Здесь нужно установить соединение с БД, вставьте необходимые команды, либо подключите конфигурационный файл для соединения. А затем проверяем таблицу на наличие в ней идентификатора, который получен выше */$query = "SELECT * FROM sessions WHERE id_session = ‘$id_session‘";$sql = mysql_query($query);//Тут вставьте проверку успешности выполнения запроса/* Если сессия с таким id уже есть в таблице, значит юзер он-лайн. Нужно обновить время его последнего посещения. */$query = "UPDATE sessions SET last_action = NOW(), user = ‘$_SESSION[user]‘ WHERE id_session = ‘$id_session‘‘;mysql_query($query);// Если такого id нет, то помещаем его в таблицу -//допишите запрос...// И удалим всех юзеров, которые неактивны 30 минут$query = "DELETE FROM sessions WHERE last_action < NOW() - INTERVAL ‘30‘ MINUTE";mysql_query($query);?>
Неизвестный
07.01.2007, 19:07
общий
это ответ
Здравствуйте, Uman!
Могу посоветовать просто отслеживать активное окно сообщений, которое наверняка будет автоматически обновляться через какой-то промежуток времени. И если окно долго не обновлялось имеено у конкретного пользователя (3-5 минут или можно меньше, скажем 1 минута) то можно считать что пользователя нет!
А в качестве авторизации использовать либо сессии или либо куки!
Форма ответа