php/html - http_referer - http_referer
-
03-07-2019 - |
Вопрос
Я создаю веб-сайт и на одной конкретной странице хочу отправить пользователя обратно на предыдущую страницу.Я довольно новичок в PHP / HTML и использую некоторый существующий код для получения идей и помощи.
Существующий код использует следующий метод:
if (! empty($HTTP_REFERER))
{
header("Location: $HTTP_REFERER");
} else
{
header("Location: $CFG->wwwroot");
}
Однако, когда я использую этот код, HTTP_referer всегда обрабатывается как пустой, и пользователь перенаправляется на корневую страницу.Есть какие-нибудь очевидные недостатки в этом коде?
Решение
Вам нужно использовать:
$_SERVER['HTTP_REFERER']
Другие советы
Не полагайтесь на то, что HTTP-реферер является допустимым или даже непустым полем.Люди могут отказаться от этого набора, оставляя какие-либо проверки для этой переменной в пустой части предложения IF-ELSE.
Вы можете защититься от этого, отправив параметр в параметрах URL или POST, который будет содержать значение, которое вы можете использовать для перенаправления пользователя обратно.
isset($_SERVER['HTTP_REFERER']) ?$_SERVER['HTTP_REFERER'] :'';
Если вы хотите отправить пользователя обратно на предыдущую страницу и заставить его работать независимо от того, правильно ли настроен реферер, вы можете добавить параметр GET к URL (или ПУБЛИКАЦИИ)..вам нужно будет закодировать URL-адрес..Что -то вроде
http://www.domain.com.au/script.php?return=http%3a%2f%2fwww.domain.com.au%2fthis-is-where-i-was%2f
Вы можете использовать PHP-файлы urlencode()
функция.
Также обратите внимание, что заголовок refererer в любом случае может быть пустым или отсутствовать, поэтому вам вообще не следует на него полагаться..
Вы должны использовать
$_SERVER['HTTP_REFERER']
Однако посмотрите на конфигурацию register_globals в php.ini, она должна быть отключена по соображениям безопасности.Вы можете прочитать больше на Руководство по PHP для сайта.