$_SERVER['HTTP_REFERER'] 缺失

php
2022-08-30 11:00:31

我想在我的网站上使用,但我得到以下:$_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_REFERERHTTP_REFERER


答案 1

从文档中:

将用户代理引荐到当前页的页面(如果有)的地址。这由用户代理设置。并非所有用户代理都会设置此功能,有些用户代理提供修改HTTP_REFERER的功能。简而言之,它真的不可信。

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


答案 2

当 Web 浏览器从一个网站移动到另一个网站并在网站页面之间移动时,它可以选择传递它来自的 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'] : '';

使用 $_SERVER['HTTP_REFERER'] 超全局变量将 HTTP_REFERER 变量用于日志记录等目的会很有用。但是,重要的是要知道它并不总是设置的,因此,如果您在编程时打开了通知,则需要在代码中允许这样做。


推荐