我想$_SERVER['HTTP_REFERER']在我的网站上使用,但我得到以下内容:
Notice: Undefined index: HTTP_REFERER
Run Code Online (Sandbox Code Playgroud)
我试过打印$_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
)
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我找到HTTP_REFERER或建议替代方案HTTP_REFERER吗?
小智 43
从文档:
将用户代理引用到当前页面的页面地址(如果有).这是由用户代理设置的.并非所有用户代理都会设置此功能,有些用户可以将HTTP_REFERER修改为功能.简而言之,它无法真正被信任.
http://php.net/manual/en/reserved.variables.server.php
Wea*_*nds 31
当Web浏览器从一个网站移动到另一个网站以及网站的页面之间时,它可以选择传递它来自的URL.这称为HTTP_REFERER,因此如果您不从一个页面重定向到另一个页面,它可能会丢失
如果已设置HTTP_REFERER,则会显示它.如果不是那么你什么都看不到.如果未设置并且您将错误报告设置为显示通知,则会看到类似这样的错误:
Notice: Undefined index: HTTP_REFERER in /path/to/filename.php
Run Code Online (Sandbox Code Playgroud)
为了防止在通知开启时出现此错误(我总是在通知的情况下开发),您可以这样做:
if(isset($_SERVER['HTTP_REFERER'])) {
echo $_SERVER['HTTP_REFERER'];
}
Run Code Online (Sandbox Code Playgroud)
要么
echo isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
Run Code Online (Sandbox Code Playgroud)
使用$ _SERVER ['HTTP_REFERER']超全局变量将HTTP_REFERER变量用于记录等目的非常有用.但重要的是要知道它并不总是这样设置,所以如果您使用通知进行编程,那么您需要在代码中允许这样做
你可以而且永远不应该假设$_SERVER['HTTP_REFERER']存在.
如果您控制上一页,则可以将URL作为参数传递"site.com/page2.php?prevUrl=".urlencode("site.com/page1.php").
如果您不控制页面,那么您无能为力.
Referer不是强制标题.它可能存在也可能不存在或可能被修改/虚构.依靠它自担风险.无论如何,你应该包装你的调用,这样你就不会得到一个未定义的索引错误:
$server = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : "";
Run Code Online (Sandbox Code Playgroud)