$ _SERVER вопрос? - PullRequest
       1

$ _SERVER вопрос?

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

Может кто-нибудь объяснить, как я могу использовать

$_SERVER['REQUEST_URI']

Как я могу сделать это следующим образом: Чтобы получить доступ к этой странице, вы должны перейти с ЭТОЙ страницы (обе они внутренние)?

Я думал, что $ _SERVER может сделать это для меня, и нашел приведенный выше пример в php.net. Как я могу использовать это?

Спасибо

Ответы [ 5 ]

2 голосов
/ 23 октября 2010

REQUEST_URI - путь и запрос URI, как и было запрошено. Кроме того, $_SERVER['HTTP_REFERER'] содержит значение поля заголовка HTTP-запроса Referer , если доступно. Таким образом, чтобы проверить, содержат ли оба одинаковые URI-пути, вы можете сделать это:

if (isset($_SERVER['HTTP_REFERER'])) && parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) === parse_url($_SERVER['HTTP_REFERER'], PHP_URL_PATH)) {
    // Referer existing and its path is equal to the current requested URI path
}

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

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

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

У вас неверная переменная.Я думаю, что вы хотите $_SERVER['HTTP_REFERER'], которая дает вам страницу, с которой пришел пользователь.

Обратите внимание, что некоторые брандмауэры удаляют заголовок реферера из всех HTTP-запросов, поэтому HTTP_REFERER иногда может быть пустым.Также обратите внимание, что HTTP_REFERER может быть установлен веб-браузером (в клиенте), поэтому вы не должны полагаться на него в целях безопасности.Некоторые пользователи могут сами устанавливать свои заголовки реферера.

0 голосов
/ 26 декабря 2013

$ _ SERVER ['HTTP_REFERER'] - это хороший способ узнать о вызывающей странице.Но поскольку это создает проблемы в его работе, вы можете вместо этого установить флаги со страниц.Если $ _SERVER ['HTTP_REFERER'] работает нормально, тогда это лучший способ.

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

Довольно легко изменить функции $ _SERVER, включая $ _SERVER ['HTTP_REFERER'].Таким образом, это не безопасный способ проверить, кто-то посетил другую страницу раньше.Вместо этого я предлагаю вам использовать переменные сеанса (т.е. создать новую переменную сеанса, когда кто-то посещает X.php, и проверить на странице Y.php, существует ли переменная. Вы можете изменить переменную на странице Z.php, если пользователь должен иметьпосещенная страница X.php до Y.php)

Если вы действительно хотите использовать переменные $ _SERVER, как я уже говорил ранее, используйте $ _SERVER ['HTTP_REFERER'], который содержит последний URL, который посетил пользователь перед тем, как перейтина вашей странице.

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

Звучит так, как вы хотите, это $_SERVER['HTTP_REFERER'] - здесь будет указан URL-адрес страницы, по которой пользователь щелкнул для создания текущего запроса.

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

Смотри также

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