За последние 24 часа нас посетили 16074 программиста и 1511 роботов. Сейчас ищут 874 программиста ...

помогите с запуском php скрипта при помощи onUnload

Тема в разделе "PHP для новичков", создана пользователем Padaboo, 6 ноя 2009.

  1. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    в общем на странице есть такой код:
    <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...
    подскажите в чем ошибка...
     
  2. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    1. Ошибка в строке <body onUnload="java script:document.location.href='exit.php'">.
    2. Что делает document.location.href?
     
  3. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    В чем ошибка?
    document.location.href вроде как запускает скрипт exit.php который ставит
    $login=$_COOKIE['login'];
    $query="update `info` set online='0' where login='$login'";
    mysql_query($query,$link);
    setcookie(login,0);
     
  4. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    1. javascript пишется слитно
    2. document.location.href не "запускает скрипт", а переходит на адрес.
     
  5. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ошибка в попытке поймать окончание сессии таким способом.

    все нормальные люди ловят по временному интервалу, а не пытаются поймать закрытие окна браузера.
     
  6. Сырный

    Сырный Активный пользователь

    С нами с:
    6 ноя 2009
    Сообщения:
    7
    Симпатии:
    0
    Можно поподробнее, как по времени это делается?
    Допустим, от пользователя нет обращений 5 минут, а как это фиксировать сервером, если запуск скриптов инициирует клиент.Например, если я все входы и выходы пользователей хочу в базу писать.
     
  7. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    440Hz
    сессию я на всякий случай обнуляю, мне главное чтобы в таблице info, online пользователя стал 0.
    или это получается тоже самое...как подругому проверить тогда ушел пользователь или нет?

    karakh
    спасибо, ну так он перейдёт на адрес а там скрипт)) ну или подскажите тогда как лучше сделать.
     
  8. akrinel

    akrinel Активный пользователь

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    А что будет, когда твой сайт станет весьма и весьма посещамым? Лишний запрос к БД ради эфемерной точности?

    Для отображения где-нибудь над данными пользователя "сейчас на сайте" можно в memcached держать этих пользователей и по крону раз в какое-то время "вычищать", это ведь "недолговечные" данные, чего их в инфо аккаунта пихать.
     
  9. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    помойму тоже ерунда, а если пользователь отошел чайку попить и не закрыл браузер или отлучился в магазин а потом придёт и слова пойдут запросы...
     
  10. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Да я бы рад сделать подругому,да немогу придумать как... я чат делаю, как обычно с одной стороный сообщения с другой список пользователей...и я незнаю как его обновлять, как поймать что пользователь вышел?
     
  11. Сырный

    Сырный Активный пользователь

    С нами с:
    6 ноя 2009
    Сообщения:
    7
    Симпатии:
    0
    чтобы понимать, что пользователь ушёл за чаем, можно поставить автообновление страницы.
    А про таймаут я серьезно спросил, т.к. не знаю как это делается
     
  12. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    А я тоже незнаю :D :D :D
    А как автообновление страницы делать? мне для чата пригодитсо, ато пока приходится наверху обновлять ручками)
    Подскажите еше пожалуйста лучше делать чат через mysql или просто черз текстовый файлик?
     
  13. Сырный

    Сырный Активный пользователь

    С нами с:
    6 ноя 2009
    Сообщения:
    7
    Симпатии:
    0
    <head>
    <meta http-equiv='refresh' content='секунды'>
    </head>
     
  14. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    О, большое спасибо!!1А как понять на сайте пользователь или уже нет?
     
  15. Сырный

    Сырный Активный пользователь

    С нами с:
    6 ноя 2009
    Сообщения:
    7
    Симпатии:
    0
    записывать в базу/переменную/файл время последнего обращения?
     
  16. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    ну вот я например хотел ловить его когда он окно закрывает и ставить ему типа "отсутствует"
    а твоя идея как я понял записывать последнее обращение и потом через какое то время проверять и скажем через 5минут ставить ему "отссутствует", так чтоле?
     
  17. Сырный

    Сырный Активный пользователь

    С нами с:
    6 ноя 2009
    Сообщения:
    7
    Симпатии:
    0
    нет, моя идея что статус "отсутствует"-производный параметр от времени последнего обращения.Тоесть он в базе отсутствует как таковой, и каждый раз возвращается в результате обработки.
    Тоесть, например, список активных пользователей будет генерироваться не проверкой
    активный=1, а текущее время- время обращения<xxxсекунд

    как "ловить" мне самому интересно. По идее, висуны или убийство процесса браузера никак не зафиксируешь...
     
  18. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    надо почитать про устройство чатов, там наверное написано как всё это реализовано и про висунов и про убийство, неможет же пользователь всё время быть "онлайн".если что то найду поделюсь.
     
  19. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Подскажить пожалуйста логику этого всего... т.е. я совсем непонимаю от чего отталкиваться то....
    Т.е. пользователь заходит, какое событие? после чего и как проверяется тут он или уже ушел?
     
  20. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Во-первых, нет стопроцентной проверки, остался ли пользователь на сайте и читает ли он статью полчаса, или закрыл браузер и ушел.
    Обычно пишут активных пользователей в базу, у каждого пользователя стоит временная метка последнего действия. Если прошло 15 минут, то пользователь считается неактивным.
    Чат устроен на постоянный обмен. Там можно считать человека отсутствующим спустя 5-секунд (около 5 неответов).
     
  21. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Мммм ээээ, ну не совсем просто чат...сильно не ругайте
    [​IMG]
    Что , при кажом действии пользователя записывать ему временную метку?