2011-08-31 56 views
0

我有一个跟踪脚本,用于将分析数据保存到我们公司的数据库。我们有不少网站(大约2000个域名)和PPC广告系列,我使用的脚本工作得很好。

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

问题是,虽然我的$_SERVER['HTTP_REFERER'] var总是回到空白,如果我在受影响的页面上回显它,它将作为当前页面URL传递给跟踪脚本(通过$_SESSION var)。这就好像(注意'好像',我知道情况并非如此)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']; 

跟踪脚本是无关紧要的,因为我通过它的变量没有改变。

+1

你有没有考虑过使用谷歌分析? –

+0

你能从脚本中发布一些导致问题的相关代码吗? – DaveRandom

+0

@Briedis我们大量使用GA,但我也编制了他们的商业软件,他们希望单独的分析数据连接到他们的个别潜在客户。 – k4t434sis

回答

0

嗯,我找不到合适的解决方案,因此我选择使用隐藏字段,其值填充了javascript的document.referrer属性,并将其简单地传递给跟踪脚本。虽然我不太高兴,但我找不到更好的解决方案,但肯定有效。

3

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

如果链接被点击,获取来自哪个用户的引用程序的唯一脚本是响应来自浏览器的请求的脚本。所有通过HTML标签加载的资源都将当前页面作为引用者。顺便提一句,它常被用作防止图像和其他资源热链接的保护。

+0

我不认为是这种情况,HTTP_REFERER被保存为$ _SESSION变量,因此我可以将它传递给跟踪脚本。这听起来非常接近正在发生的事情 – k4t434sis

+0

什么是服务器配置?例如,你有nginx在Apache之前? –

+0

Apache/2.2.3(CentOS) – k4t434sis