$ _SERVER отсутствует

Я хочу использовать $_SERVER['HTTP_REFERER'] на моем сайте, но я получаю следующее:

 Notice: Undefined index: HTTP_REFERER 

Я пробовал печатать $_SERVER . Это обеспечивает следующее:

 Array ( [HTTP_HOST] => 192.168.1.10 [HTTP_USER_AGENT] => Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0 [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 [HTTP_ACCEPT_LANGUAGE] => en-us,en;q=0.5 [HTTP_ACCEPT_ENCODING] => gzip, deflate [HTTP_CONNECTION] => keep-alive [PATH] => /sbin:/usr/sbin:/bin:/usr/bin [SERVER_SIGNATURE] => Apache/2.2.3 (CentOS) Server at 192.168.1.10 Port 80 [SERVER_SOFTWARE] => Apache/2.2.3 (CentOS) [SERVER_NAME] => 192.168.1.10 [SERVER_ADDR] => 192.168.1.10 [SERVER_PORT] => 80 [REMOTE_ADDR] => 192.168.1.77 [DOCUMENT_ROOT] => /var/www/html [SERVER_ADMIN] => root@localhost [SCRIPT_FILENAME] => /var/www/html/sandeep/test/hash.php [REMOTE_PORT] => 53851 [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => [REQUEST_URI] => /sandeep/test/hash.php [SCRIPT_NAME] => /sandeep/test/hash.php [PHP_SELF] => /sandeep/test/hash.php [REQUEST_TIME] => 1347365919 ) 

Может ли кто-нибудь помочь мне найти HTTP_REFERER или предложить альтернативу HTTP_REFERER ?

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

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

http://php.net/manual/en/reserved.variables.server.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']. Однако важно знать, что это не всегда задано, поэтому, если вы программируете с уведомлениями, тогда вам нужно будет это сделать в своем коде

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

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

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

 $server = isset($_SERVER['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(); } 

когда

 $_SERVER['HTTP_REFERER'] 

не удается, попробуйте

 getenv('HTTP_REFERER') 

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

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

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

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

 $option = @$_GET["foo"];