Как я могу убедиться, что пользователь заходит на страницу моего сайта, только если он перенаправлен с определенной функции? - PullRequest
0 голосов
/ 22 сентября 2010

На моей странице я использую функцию javascript

<script> 
function redirect(){ 
    window.location="hurray.php";
}
</script>

Вызов функции из строки ниже.

<input id="search_box" name="textbox" type="text" size="50" maxlength="100" onkeypress="redirect()" />

Теперь я хочу убедиться, что страница'hurray.php' посещается только из этого действия.Если я набрал прямой URL на странице «ура», я не смогу посетить эту страницу, скорее перенаправить ее на предыдущую страницу.

Ответы [ 4 ]

2 голосов
/ 22 сентября 2010

Расширьте свою функцию, чтобы она устанавливала cookie через «document.cookie», затем проверяйте с помощью JS, PHP или чего-либо еще на целевой странице, установлен ли cookie, и перенаправляйте куда-то еще, если нет, довольно просто. Конечно, это не совсем безопасно!

2 голосов
/ 22 сентября 2010

Сделайте AJAX-вызов функции PHP, которая установит переменную в сеансе.Когда вызов AJAX возвращает ответ, перенаправьте пользователя на эту страницу и проверьте переменную сеанса.Вы можете удалить его, если не хотите, чтобы пользователь мог снова посетить его для этого сеанса.

2 голосов
/ 22 сентября 2010

Вы не можете сделать это, используя только javascript, я не думаю.

Вам необходимо перехватить это на сервере и обработать его соответствующим образом.

Возможно, вам понадобится токен дляЕсли вы будете отправлены вместе с перенаправлением, вы можете затем проверить эту сторону сервера маркеров и позволить перенаправлению завершить или выполнить какое-либо другое действие, если пользователь был отправлен туда по ошибке или введя URL-адрес напрямую.

ПочемуВы хотите сделать это в приведенном вами примере?Наверняка это уведет пользователя от формы поиска и на другую страницу?

0 голосов
/ 22 сентября 2010

Содержит ли ваш пример реальный код, или вы только что включили что-то, что придумано для упрощения вопроса?

Это кажется странным - предоставить пользователю окно поиска, а затем, как только они начнут вводить текст, перенаправьте их на другую страницу.

Если вы выполняете поиск и хотите, чтобы страница earch запускалась из формы, а не при вводе пользователем URL-адреса, затем рассмотрите возможность установки метода формы на «POST» и проверки этого на странице поиска.Если метод «GET», то URL-адрес был введен вручную, и вы можете перенаправить обратно на исходную страницу.

По общему признанию, это технически нарушает рекомендации по использованию «POST», которые должны быть толькодля операций, которые изменяют информацию, а не «GET», который следует использовать при запросе информации.Тем не менее, это один из случаев, когда это может быть оправдано.

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

...