$ _SERVER ['HTTP_REFERER']显示当前页面

时间:2011-08-31 18:55:07

标签: php session http-referer

我有一个跟踪脚本,用于将分析数据保存到公司数据库。我们有相当多的网站(大约2000个域名)和PPC广告系列,我正在使用的脚本工作正常。

我知道$_SERVER['HTTP_REFERER']不是100%可靠,可以是空的或欺骗,无论如何,这是我们进入的一小部分潜在客户(我在跟踪脚本中考虑到这一点)

问题是虽然如果我在受影响的页面上回显它,我的$_SERVER['HTTP_REFERER'] var总是会返回空,但它会被传递给跟踪脚本(通过$_SESSION var)作为当前页面URL。就好像(注意'似乎',我知道情况并非如此)PHP正在用$_SERVER['REQUEST_URI']代替$_SERVER['HTTP_REFERER']。 这是来自着陆页:

$_SESSION['keywords'] = $_SERVER['HTTP_REFERER'];
require_once 'tracking.php';
$raw_query = $_SESSION['keywords'];
 $key_browser = getKeywords($raw_query);
 $keywords = $key_browser['keywords'];
 $referer = $key_browser['referer'];
 $user_agent = getBrowserOs($_SERVER['HTTP_USER_AGENT']);
 $br = $user_agent['browser'];
 $os = $user_agent['os'];

跟踪脚本无关紧要,因为我传递的变量不会改变。

2 个答案:

答案 0 :(得分:3)

如果您使用像<script src="mytracking.php"></script>这样的HTML标记加载脚本,则referer将与request_uri相同,因为request_uri是请求脚本的那个。

如果单击链接,则唯一获取用户来自哪个引用的脚本是响应来自浏览器的请求的脚本。通过HTML标记加载的所有资源都将当前页面作为引用。顺便说一下,这通常被用来防止图像和其他资源的热链接。

答案 1 :(得分:0)

我找不到合适的解决方案,所以我选择使用隐藏字段,其值填充了javascript的document.referrer属性,并将其传递给跟踪脚本。绝对有效,虽然我不太高兴我找不到更好的解决方案。