Как отследить событие закрытие окна браузера

я бы вообще иначе сделал - ставил куку минут на десять, и обновлял её при каждом запросе.. истекла - знать свалил.. зато если юзверь закрыл по ошибке и переоткрыл (хотя, признаться, хз что браузер отправит, и отправит ли что вообще, а не из кеша выдернет) - не придется бедолаге заново тему перевыбирать..
 
ставил куку минут на десять
Вы же знаете как работают бешеные тестеры, они ни то что через 10 мин вернуться проверить какая там тема будет открыта, а сразу же в туже мин
 
вообще то тестировщики по test case'ам работают.. будет написано "ждать сутки", но свалится репорт типа "закрыл, открыл, не скинулось" - клавиатурой по щам, другим в назидание..

зы.. а вот если в кейсе вообще ничего про это написано не будет, постановщика покарать.. )))
 
а что если адрес будет Для просмотра ссылки Войди или Зарегистрируйся то parse_url($_SERVER['HTTP_REFERER']) вернет Для просмотра ссылки Войди или Зарегистрируйся а не site.ru
Если это вопрос, то "да". parse_url вернёт массив, значение 'host' в котором будет равно хосту. Проще всего проверить.

я бы вообще иначе сделал - ставил куку минут на десять, и обновлял её при каждом запросе.. истекла - знать свалил.. зато если юзверь закрыл по ошибке и переоткрыл (хотя, признаться, хз что браузер отправит, и отправит ли что вообще, а не из кеша выдернет)
Если кука стояла на 10 минут, и пользователь "успел" переоткрыть - отправится кука. Вариант с кэшем вряд ли возможен, т.к. PHP не отправляет кэширующие заголовки, а насчёт отправки программистом/движком - сомневаюсь. И, даже если кэширующие заголовки были использованы - запрос должен уйти либо с Etag, либо с 304 ответом.
 
Ну значит можно написать так
Код:
$parse = parse_url($_SERVER['HTTP_REFERER']);
if($parse['host'] != 'site.ru' || $parse == parse_url($_SERVER['HTTP_REFERER']){
    $_Cookie['TemplateSel'] = 7;//это значение по умолчанию
}){

}
Или же делать редирект в файле htaccess с www на ну www домен
Исправил ошибку с = на ==
 
Последнее редактирование:
всегда будет срабатывать.. причём абсолютно.. вторая часть условия всегда даст true, т.к. идёт присваивание..
 
Мне нужно было выгрузить базу в CSV файл при закрытии. Событие не происходило
пока я не вставил -- alert( '***' ); Теперь при любом закрытии вкладки событие отрабатывается но сообщение не появляется. В Chrome работает 100%.

Код:
    function setHandler() {
      window.onbeforeunload = function() {
          alert( 'Документ и все ресурсы загружены' );
          $.ajax({
            type: 'POST',
            url: 'export.php',
            data:{export:1}
             });
        return;
      };
    }
    window.onload = function() {
    setHandler();
  };
 
Назад
Сверху