Из документации:
Адрес страницы (если есть), которая ссылалась на пользовательский агент на текущую страницу. Это устанавливается пользовательским агентом. Не все пользовательские агенты установят это, а некоторые предоставляют возможность изменять HTTP_REFERER как функцию. Короче говоря, на него нельзя доверять.
Referer не является обязательным заголовком . Он может быть или не быть там или может быть изменен / фиктивный. Положитесь на него на свой страх и риск. В любом случае, вы должны обернуть свой вызов, чтобы не получить неопределенную ошибку индекса:
$server = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : "";
Почему бы не использовать функцию «Игнорировать ошибку» php для установки переменных?
$ref = @$_SERVER["HTTP_REFERER"];
Также работает над GET / POST
$option = @$_GET["foo"];
@
имеет очень ограниченный вариант использования.
– frumbert
22 July 2015 в 21:58
Если
$_SERVER['HTTP_REFERER']
не работает, попробуйте
getenv('HTTP_REFERER')
Это может сработать для вас.
Вы можете и не должны предполагать, что $_SERVER['HTTP_REFERER']
будет присутствовать.
Если вы управляете предыдущей страницей, вы можете передать URL как параметр "http://site.com/page2.php?prevUrl=".urlencode("http://site.com/page1.php")
. Если вы не контролируете страницу, то вы ничего не можете сделать.
Когда веб-браузер перемещается с одного веб-сайта на другой и между страницами веб-сайта, он может необязательно передавать URL-адрес, из которого он пришел. Это называется HTTP_REFERER, поэтому если вы не переадресовываете с одной страницы на другую, это может отсутствовать
Если HTTP_REFERER был установлен, он будет отображаться. Если это не так, вы ничего не увидите. Если он не установлен, и у вас есть сообщение об ошибках, установленное для показа уведомлений, вы увидите такую ошибку:
Notice: Undefined index: HTTP_REFERER in /path/to/filename.php
Чтобы предотвратить эту ошибку при включении уведомлений (я всегда разрабатываю уведомления) , вы можете сделать это:
if(isset($_SERVER['HTTP_REFERER'])) {
echo $_SERVER['HTTP_REFERER'];
}
ИЛИ
echo isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
Полезно использовать переменную HTTP_REFERER для ведения журналов и т. д., используя супергелобал $ _SERVER ['HTTP_REFERER'] переменная. Однако важно знать, что это не всегда задано, поэтому, если вы программируете с уведомлениями, тогда вам нужно будет это сделать в своем коде
function redirectHome($theMsg, $url = null, $seconds = 3) {
if ($url === null) {
$url = 'index.php';
$link = 'Homepage';
} else {
if (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] !== '') {
$url = $_SERVER['HTTP_REFERER'];
$link = 'Previous Page';
} else {
$url = 'index.php';
$link = 'Homepage';
}
}
echo $theMsg;
echo "<div class='alert alert-info'>You Will Be Redirected to $link After $seconds Seconds.</div>";
header("refresh:$seconds;url=$url");
exit();
}