Вопрос

Я создаю веб-сайт и на одной конкретной странице хочу отправить пользователя обратно на предыдущую страницу.Я довольно новичок в 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 для сайта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top