Определите, загружает ли пользователь вручную URL в браузер или генерирует URL сервером в php - PullRequest
0 голосов
/ 19 октября 2010

Спасибо за ваше время.

Я занимаюсь разработкой приложения с использованием PHP. В этом для некоторого instace я добавил логику, так что для определенных областей совпадения затем перенаправить на конкретный URL.

if(//statement) {
   redirect to specific URL(e.g. http://www.example.com/testing.php )
}

Выше моя основная логика. Здесь я хочу определить, загружал ли пользователь вручную этот URL http://www.example.com/testing.php в браузер или он перенаправляется с веб-сервера и затем загружается.

Как мне этого добиться.

Ваши предложения приветствуются !!!.

-Pravin.

Ответы [ 4 ]

3 голосов
/ 19 октября 2010

HTTP в качестве протокола не включает в себя возможность различать как доступ к URL-адресу или что именно пользователь делал в браузере. Запрос URL-адреса - это запрос URL-адреса, и не важно, нажал ли пользователь ссылку, обновил страницу или набрал URL-адрес.

Существуют индикаторы , которые могут или не могут сигнализировать об определенном поведении (например, заголовок Referer), но они ненадежны, они не предназначены для этой цели и могут вводить странное поведение в край случаи, если вы полагаетесь на них.

Пожалуйста, помните об этом всякий раз, когда вы пытаетесь реализовать что-то подобное.
Лучше, если вы разработаете приложение так, чтобы оно не зависело от поведения RESTless , подобного этому.

1 голос
/ 19 октября 2010

Это можно сделать, проверив реферер ($ _SERVER ['HTTP_REFERER']), но, к сожалению, это ненадежно, так как вы не можете гарантировать, что каждый браузер отправляет реферер.

Так что, может быть, лучше добавить дополнительный параметр в ваше перенаправление, вы можете проверить наличие в нем файла test.php.

Чтобы люди не могли установить этот параметр вручную (или случайно скопировать / вставить), вы можете проверить переменное значение этого параметра, например, отметка времени.

Также можно установить переменную сеанса, но это означает, что установлен cookie сеанса (что не нравится некоторым клиентам).

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

1 голос
/ 19 октября 2010

Вы можете проверить значение $_SERVER['HTTP_REFERER'] (Документация здесь )

Но это не даст вам 100% гарантии, потому что некоторые браузеры не отправляют реферера.

Другим способом было бы установить какое-то значение «по ссылке» в $_SESSION перед перенаправлением пользователя.

0 голосов
/ 19 октября 2010

Вы можете добавить специальный параметр GET к URL перенаправления:

http://www.example.com/testing.php?redirect=1

если $_GET['redirect'] существует, то это происходит из-за перенаправления, в противном случае его нет. Однако это может быть подделано.

Вы также можете установить переменную сеанса на странице, которая перенаправляет $_SESSION['redirect'] = 1, а затем проверить в своем файле testing.php, существует ли этот сеанс var, также не забудьте сбросить этот сеанс var на testing.php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...