Intereting Posts
Экзотические имена методов, констант, переменных и полей – ошибка или функция? Разбор SOAP-ответа с PHP по-разному Вход с Amazon говорит, что пользователь не согласился, но у них есть – Alexa SMAPI CakePhp сортирует вывод $ this-> Form-> input Как присоединиться к таблицам в Zend при использовании класса, который наследуется от Zend_Db_Table_Row_Abstract? Каков наилучший способ вырезать все теги html из строки? Использование бродяг и усадьбы для нескольких сайтов и для каждой установки проекта Окончательный способ найти номера телефонов в строке PHP с preg_replace Как извлекать годы, месяцы, дни, часы, минуты, секунды с даты mysql? JSON PHP Array для Javascript Проблемы с настройкой PHP для работы с mySQL Совместное использование анкеров в социальных сетях PHP-сессии с отключенными кукисами, работает ли это? Получить название категории и ссылку категории внутри цикла в WordPress pcntl_fork () return, Fatal error: вызов неопределенной функции pcntl_fork ()

Любой способ идентифицировать обновление F5 в PHP?

Есть ли способ определить, обновил ли кто-то текущую страницу с помощью PHP, а не прибыл из другого места.

У меня есть доступ только к коду для текущей страницы, поэтому я не могу передать что-либо со страницы в другом месте для проверки.

Название вашего вопроса предполагает, что вы специально ищете способ обнаружения, когда страница обновляется с помощью клавиши F5. Если это так, вам определенно потребуется JavaScript, чтобы определить, был ли нажат ключ. Если вам все равно, как обновилась страница, то этот ответ должен помочь: https://stackoverflow.com/a/456915/1144176 . Он учитывает полный URL-адрес, а также содержимое любой формы.

Добавьте событие unload() которое либо устанавливает cookie, либо запускает сеанс PHP через AJAX. Затем, когда страница будет загружена, проверьте файл cookie или сеанс – если он присутствует и совсем недавно, пользователь только что обновил его.

Нет, нет.

PHP предоставляет переменную $_SERVER переменной HTTP_REFERER . К сожалению, веб-браузеры обновляют значение реферера (которое они отправляют на веб-сервер в запросе) при изменении местоположения, например, ссылки на ссылки и т. Д .; одна сторона отправляет вас в другую (даже если страница отправляет вас по ссылке). Однако для F5 они не являются (поскольку страница не является ее реферированием в конце концов. Пользователь принял меры, нажав f5).

Тем не менее, вы можете использовать JavaScript или другие клиентские скрипты для отслеживания нажатий клавиш или разгрузки страницы. Затем вы можете использовать сценарии на стороне клиента, чтобы идентифицировать обновление на стороне клиента или обновить некоторые отслеживания пользователей на стороне сервера.

Вы также можете отслеживать запрошенные пользователями страницы только на стороне сервера. Однако это не будет специально определять F5-обновления. вкладка close / open, reopen link и т. д. также приведет к тому, что запрашивается тот же URI.

Нет пуленепробиваемого способа идентификации обновления F5 на стороне клиента или сервера. Но у меня есть эта идея:

Каждый раз, когда загружается ваша страница:

  • Сравните текущий URL с переменной сеанса (см. Ниже). Если они одинаковы, вы можете предположить, что пользователь повторно загрузил страницу
  • LAST_VIEWED_PAGE текущий URL-адрес в переменной сеанса, например LAST_VIEWED_PAGE