【发布时间】:2012-12-19 08:30:26
【问题描述】:
当浏览器向服务器发送标头信息时,$_SERVER['HTTP_REFERER'] 应该给我们上一页的 URL 对吧?
当标头信息未发送到服务器时,$_SERVER['HTTP_REFERER'] 会返回什么?空字符串?错误的?空值?还是……?
【问题讨论】:
-
使用
var_dump($_SERVER)自己看看。
标签: php url http-headers
当浏览器向服务器发送标头信息时,$_SERVER['HTTP_REFERER'] 应该给我们上一页的 URL 对吧?
当标头信息未发送到服务器时,$_SERVER['HTTP_REFERER'] 会返回什么?空字符串?错误的?空值?还是……?
【问题讨论】:
var_dump($_SERVER) 自己看看。
标签: php url http-headers
如果未发送 HTTP 引用请求标头,则 $_SERVER['HTTP_REFERER'] 可能未设置,尽管它可能是空字符串。在这种情况下是否设置可能取决于服务器。
与所有 HTTP 请求标头一样,在阅读时检查其是否存在:
$httpReferer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;
【讨论】:
$httpReferer = $_SERVER['HTTP_REFERER'] ??空;
$_SERVER['HTTP_REFERER'] 并不可靠,因为用户浏览器上的特定设置可能会破坏它。但是是的,它应该包含以前的 URL,并且在未发送标头时将返回空字符串或 NULL,具体取决于服务器配置。
【讨论】:
$_SERVER['HTTP_REFERER'] PHP 超全局只报告底层 Referer HTTP 请求标头的值。不可靠的是 HTTP 请求标头。 引用文档不会以任何其他方式传递。
$_SERVER 是一个全局数组变量,referrer 值是带有键 HTTP_REFERER 的数组元素。如果浏览器没有发送referrer 标头,则该元素只是从数组中丢失。可以检查数组是否有array_key_exists的元素;在这种情况下:
array_key_exists('HTTP_REFERER', $_SERVER)
【讨论】: