我有一个网站页面,大多数访问者都会花时间在这个页面上。该网站使用PHP和Codeigner以及jQuery。
问题:然而,我相信像Piwik这样的跟踪系统通过从访问者加载页面的时间减去访问者离开该页面到新页面的时间来计算在该页面上花费的时间。
有办法绕过这个吗?也许可以使用javascript来触发跟踪系统,让它知道访问者正在离开页面?
编辑:我在$id中添加了一些"salting",我不知道。。我觉得它更独特,尽管我认为由于使用了微秒,不太可能有类似的ID,但只是为了确保
类似的东西
JQuery:Ajax每10秒向StayAlive.php请求一次
function pingPing(){
$.ajax(
{
type:'GET',
url:'StayAlive.php',
success: function()
{
setTimeout(pingPing, 10000);
}
}
}
PHP:StayAlive.PHP
<?php
function newUser(){
$id=sha1($_SERVER['HTTP_USER_AGENT'].microtime().$_SERVER['REMOTE_ADDR']);
setcookie("id", $id, time()+3600*24*365);
//create new row in the database for that $id
}
if (isset($_COOKIE["id"])){
//check if the id is in the database
//if yes => time_spent+=10
//if no => newUser();
}
else
newUser();
?>
当用户离开页面时,可以使用以下内容向页面发送Ajax请求(他们不一定要加载新的请求)。
$(window).unload( function () {
$.ajax({
type: "POST",
url: "yourpage.php",
data: {
command: "disconnect"
},
dataType: "json",
async: false,
success: function(data) {}
});
});
您可以创建一个javascript,在用户加载页面时生成用户的时间戳,并在用户离开时将其传递给.php页面。计算时间戳的差异,计算出它们在页面上花费的时间。