в общем на странице есть такой код: <body onUnload="java script:document.location.href='exit.php'"> в exit.php вот так: $login=$_COOKIE['login']; $query="update `info` set online='0' where login='$login'"; mysql_query($query,$link); setcookie(login,0); кароче при закрытии окна в таблицу инфо аккаунту должно ставиться 0... подскажите в чем ошибка...
1. Ошибка в строке <body onUnload="java script:document.location.href='exit.php'">. 2. Что делает document.location.href?
В чем ошибка? document.location.href вроде как запускает скрипт exit.php который ставит $login=$_COOKIE['login']; $query="update `info` set online='0' where login='$login'"; mysql_query($query,$link); setcookie(login,0);
ошибка в попытке поймать окончание сессии таким способом. все нормальные люди ловят по временному интервалу, а не пытаются поймать закрытие окна браузера.
Можно поподробнее, как по времени это делается? Допустим, от пользователя нет обращений 5 минут, а как это фиксировать сервером, если запуск скриптов инициирует клиент.Например, если я все входы и выходы пользователей хочу в базу писать.
440Hz сессию я на всякий случай обнуляю, мне главное чтобы в таблице info, online пользователя стал 0. или это получается тоже самое...как подругому проверить тогда ушел пользователь или нет? karakh спасибо, ну так он перейдёт на адрес а там скрипт)) ну или подскажите тогда как лучше сделать.
А что будет, когда твой сайт станет весьма и весьма посещамым? Лишний запрос к БД ради эфемерной точности? Для отображения где-нибудь над данными пользователя "сейчас на сайте" можно в memcached держать этих пользователей и по крону раз в какое-то время "вычищать", это ведь "недолговечные" данные, чего их в инфо аккаунта пихать.
помойму тоже ерунда, а если пользователь отошел чайку попить и не закрыл браузер или отлучился в магазин а потом придёт и слова пойдут запросы...
Да я бы рад сделать подругому,да немогу придумать как... я чат делаю, как обычно с одной стороный сообщения с другой список пользователей...и я незнаю как его обновлять, как поймать что пользователь вышел?
чтобы понимать, что пользователь ушёл за чаем, можно поставить автообновление страницы. А про таймаут я серьезно спросил, т.к. не знаю как это делается
А я тоже незнаю А как автообновление страницы делать? мне для чата пригодитсо, ато пока приходится наверху обновлять ручками) Подскажите еше пожалуйста лучше делать чат через mysql или просто черз текстовый файлик?
ну вот я например хотел ловить его когда он окно закрывает и ставить ему типа "отсутствует" а твоя идея как я понял записывать последнее обращение и потом через какое то время проверять и скажем через 5минут ставить ему "отссутствует", так чтоле?
нет, моя идея что статус "отсутствует"-производный параметр от времени последнего обращения.Тоесть он в базе отсутствует как таковой, и каждый раз возвращается в результате обработки. Тоесть, например, список активных пользователей будет генерироваться не проверкой активный=1, а текущее время- время обращения<xxxсекунд как "ловить" мне самому интересно. По идее, висуны или убийство процесса браузера никак не зафиксируешь...
надо почитать про устройство чатов, там наверное написано как всё это реализовано и про висунов и про убийство, неможет же пользователь всё время быть "онлайн".если что то найду поделюсь.
Подскажить пожалуйста логику этого всего... т.е. я совсем непонимаю от чего отталкиваться то.... Т.е. пользователь заходит, какое событие? после чего и как проверяется тут он или уже ушел?
Во-первых, нет стопроцентной проверки, остался ли пользователь на сайте и читает ли он статью полчаса, или закрыл браузер и ушел. Обычно пишут активных пользователей в базу, у каждого пользователя стоит временная метка последнего действия. Если прошло 15 минут, то пользователь считается неактивным. Чат устроен на постоянный обмен. Там можно считать человека отсутствующим спустя 5-секунд (около 5 неответов).
Мммм ээээ, ну не совсем просто чат...сильно не ругайте Что , при кажом действии пользователя записывать ему временную метку?