2012-02-08 62 views
2

我想创建一个简单的网站统计javascript代码(分析)简单的JavaScript跟踪脚本

,但不知道什么正确的方法,包括引荐?

我觉得莫名其妙地需要用PHP来实现内部track.php的JavaScript逃逸(document.referrer)

这是我到目前为止有:在远程站点

脚本:

<script type="text/javascript" src="http://www.mydomain.com/track.php"></script> 

local track.php:

<?php 
$str = 'document.write(\'<img src="http://www.mydomain.com/tracking.php?id="/>\');'; 
echo $str; 
?> 

local tracking.php

<?php 
header("content-type:image/gif"); 
$ip = $_SERVER["REMOTE_ADDR"]; 
$browser = $_SERVER['HTTP_USER_AGENT']; 
//$referer = ???? 
///etc... 
// save results to db ... 
+0

['$ _SERVER [ 'HTTP_REFERER']'](http://www.php.net/manual/en/reserved.variables.server.php )。 – 2012-02-08 22:13:57

回答

5

你想建立所有PARAMS列表,例如...

var params = { 
    resolution: screen.width + ',' + screen.height 
}; 

...那么你需要连载他们得到参数...

var serialisedGetParams = []; 

for (var param in params) { 
    if (! params.hasOwnProperty(param)) { 
     continue; 
    } 
    serialisedGetParams.push(param + '=' + encodeURIComponent(params[param])); 
} 

serialisedGetParams = serialisedGetParams.join('&'); 

...然后做一个请求......

(new Image).src = 'http://yourdomain.com/track.php?' + serialisedGetParams; 

您发送的PARAMS应该是东西只有 JavaScript可以得到的,如分辨率等通过图像的GET PARAMS发送他们允许你绕过同源策略。

此外,图像请求可以获得信息,如IP,推荐人等。检查$_SERVER超级全球的关于请求的丰富信息。

+0

'document.referrer'属性比'$ _SERVER ['HTTP_REFERER']'超全局更容易欺骗。 – 2012-02-08 22:16:07

+0

你可以很容易地改变$ _SERVER referer。我也会像亚历克斯一样 – dynamic 2012-02-08 22:16:58

+0

@RobW如果它可以被欺骗,它是多么容易(修改GET参数或修改浏览器的请求标头)并不重要。我提供的参数比一个建议更为典型。 – alex 2012-02-08 22:17:24

1

您是否考虑过使用Google Analytics? (或任何其他免费产品)。这很可能比你写的任何东西都更好,更快。唯一的缺点是,你卖你的灵魂谷歌..

如果你想显示你的老板看中的图片,这是要走的路:P

0

我会做一个AJAX调用,并将您需要保存的信息传递给您的PHP页面,直接从javascript中保存。

像location.href,用户代理和其他东西

+1

很难制作XHR跨域并支持较老的IE。 – alex 2012-02-08 22:20:47

+0

你完全正确,忘记了跨域的XHR问题 – dynamic 2012-02-08 22:27:29