15

当浏览器向服务器发送 header 信息时,$_SERVER['HTTP_REFERER']应该给我们上一页的 URL 对吗?

$_SERVER['HTTP_REFERER']当标头信息未发送到服务器时,返回什么?空字符串?错误的?空值?或者... ?

4

3 回答 3

16

如果未发送 HTTP 引用请求标头,$_SERVER['HTTP_REFERER']则可能未设置,尽管它可能是空字符串。在这种情况下是否设置它可能取决于服务器。

与所有 HTTP 请求标头一样,在阅读时检查其是否存在:

$httpReferer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;
于 2012-12-19T08:32:05.140 回答
4

$_SERVER['HTTP_REFERER']不是很可靠,因为用户浏览器上的特定设置可能会破坏它。但是是的,它应该包含以前的 URL,并且在未发送标头时它将返回空字符串或 NULL,具体取决于服务器配置。

于 2012-12-19T08:32:03.407 回答
0

$_SERVER 是一个全局数组变量,referrer 值是带有键 HTTP_REFERER 的数组元素。如果浏览器没有发送referrer 标头,则该元素只是从数组中丢失。您可以使用array_key_exists检查数组是否有元素;在这种情况下:

array_key_exists('HTTP_REFERER', $_SERVER)

于 2012-12-19T08:40:04.793 回答