2012-02-08 74 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