REFERER return nothing [duplicate]

35
задан j0k 12 September 2012 в 08:49
поделиться

7 ответов

Из документации:

Адрес страницы (если есть), которая ссылалась на пользовательский агент на текущую страницу. Это устанавливается пользовательским агентом. Не все пользовательские агенты установят это, а некоторые предоставляют возможность изменять HTTP_REFERER как функцию. Короче говоря, на него нельзя доверять.

http://php.net/manual/en/reserved.variables.server.php

33
ответ дан desimusxvii 21 August 2018 в 08:01
поделиться

Referer не является обязательным заголовком . Он может быть или не быть там или может быть изменен / фиктивный. Положитесь на него на свой страх и риск. В любом случае, вы должны обернуть свой вызов, чтобы не получить неопределенную ошибку индекса:

$server = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : "";
5
ответ дан Community 21 August 2018 в 08:01
поделиться

Почему бы не использовать функцию «Игнорировать ошибку» php для установки переменных?

$ref = @$_SERVER["HTTP_REFERER"];

Также работает над GET / POST

$option = @$_GET["foo"];
-13
ответ дан frumbert 21 August 2018 в 08:01
поделиться
  • 1
    Это эквивалентно подметанию под ковриком. – blockhead 28 August 2014 в 13:19
  • 2
    @blockhead Это комментарий, хотя – Dharmendra 8 June 2015 в 10:28
  • 3
    забыть, что @ даже существует его источник зла – Prozi 21 July 2015 в 13:15
  • 4
    @Prozi Я так много наслаждаюсь необоснованными утверждениями. Я также поднимаюсь в "eval" является "злым" лагерь, но никто не удосуживается упомянуть почему. @ имеет очень ограниченный вариант использования. – frumbert 22 July 2015 в 21:58
  • 5
    тролль ответ! игнорировать ошибки, которые он говорит! ха-ха – Dheeraj 18 September 2015 в 09:05

Если

$_SERVER['HTTP_REFERER']

не работает, попробуйте

getenv('HTTP_REFERER')

Это может сработать для вас.

-3
ответ дан Peter 21 August 2018 в 08:01
поделиться
  • 1
    getenv ('HTTP_REFERER') предполагает, что вы использовали putenv () с именем HTTP_REFERER или установили экологический var из вашего vhost. Это НЕ резервный, альтернативный или полезный метод для получения $ _SERVER ['HTTP_REFERER'], если он не установлен. SetEnv HTTP_REFERER & quot; как вы можете установить ref здесь?! & quot; или .... putenv («HTTP_REFERER = $ butHow») – recurse 17 January 2017 в 21:47

Вы можете и не должны предполагать, что $_SERVER['HTTP_REFERER'] будет присутствовать.

Если вы управляете предыдущей страницей, вы можете передать URL как параметр "http://site.com/page2.php?prevUrl=".urlencode("http://site.com/page1.php"). Если вы не контролируете страницу, то вы ничего не можете сделать.

6
ответ дан Tchoupi 21 August 2018 в 08:01
поделиться

Когда веб-браузер перемещается с одного веб-сайта на другой и между страницами веб-сайта, он может необязательно передавать 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'] переменная. Однако важно знать, что это не всегда задано, поэтому, если вы программируете с уведомлениями, тогда вам нужно будет это сделать в своем коде

24
ответ дан Wearybands 21 August 2018 в 08:01
поделиться
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();
}
-1
ответ дан Yasir ayad 21 August 2018 в 08:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: