Запретить людям возвращаться на сайт? - PullRequest
2 голосов
/ 05 апреля 2011

Мне поручено придумать способ определить, попал ли человек на наш сайт с помощью кнопки «назад» (то есть он покинул наш сайт и вернулся), и выйти из него, если так.

Я придумала некоторые варианты, но мне интересно, какие еще опции мне могут не хватать.

К вашему сведению, у нас есть состояние сеанса, поэтому на стороне сервера мы находимся в течение длительного времени, но им нужна дополнительная проверка на стороне клиента.

вариант 1: установить приготовление через onunload, срок действия которого истекает через x секунд. На каждой странице нашего сайта я проверяю наличие указанных файлов cookie. Если он существует, я предполагаю, что они пришли с другой страницы нашего сайта и ничего не делают. Если его там нет, я предполагаю, что они исчезли с нашего сайта более чем на x секунд и перенаправляют. Против: устройства Blackberry под управлением OS5 не поддерживают загрузку.

вариант 2: то же самое, что и # 1, но вместо того, чтобы устанавливать cookie на загрузку, мы устанавливаем его при каждом нажатии каждой ссылки, переходящей на другую страницу нашего сайта. против: грязный

вариант 3: проверять историю браузера при каждой загрузке каждой страницы нашего сайта. Если предыдущий URL не один из наших, мы выходим из него. Минусы: поддержка браузера? Похоже, объекты предыдущей / следующей истории теперь заблокированы в современных браузерах из-за безопасности.

Вариант 4. Через JS каждые x секунд проверять наличие cookie. Если он есть, сбросьте его до истечения через х секунд. Если его там нет, предположим, что они вернулись откуда-то еще. Против: Не уверен, что JS cookies будут установлены, когда эта страница может быть в фоновом режиме (приложение переключается на iPhone или использует другую вкладку в браузере на рабочем столе).

Любые другие варианты, которые я должен рассмотреть? Есть ли «правильный» способ справиться с этим? Это просто цепляет за соломинку, пытаясь предотвратить нормальное поведение браузера?

Ответы [ 2 ]

1 голос
/ 05 апреля 2011

Вы можете сохранить текущее имя страницы / действие / идентификатор в переменной сеанса, а затем использовать javascript onChange / load / keyup / keydown для запроса текущего состояния пользователя с сервера. Если он не совпадает, перенаправьте или иным образом заблокируйте их от просмотра текущей страницы.

Это метод, который я использовал, но у него есть свои недостатки ... например, onload не всегда работает, когда пользователь использует кнопку назад. OnChange и т. Д. На определенных полях формы определенно работает. Таймеры также довольно просты, но быстрый пользователь может получить информацию через страницу независимо от того.

0 голосов
/ 05 апреля 2011

Это не так сложно ... Использовать объект истории javascript

history.next дает полный URL-адрес страницы в кнопке пересылки.Простое регулярное выражение может определить, принадлежит ли оно вашему домену.

Я просто не знаю, поддерживается ли оно всеми браузерами

...