2012-03-17 11 views
0

私は、ほとんどの訪問者が自分の時間を過ごすウェブサイトのページを持っています。このサイトではCodeigniterとjQueryでPHPを使用しています。追跡の方法1ページのウェブサイトの訪問時間

問題:しかし、私はPiwikのような追跡システムは、訪問者が、彼はページをロードする時間から新しいページにそのページを離れる時間を減算することで、ページに費やした時間を計算すると信じています。

方法はありますか?多分追跡システムを起動するためにJavaScriptを使用して、訪問者がページを離れることを知っているでしょうか?

+1

JSベースのonbeforeunload-type ajax pingerを使用すると、誰かがページを離れるときを判断できます。特に、どこか別の場所に行かなくても、別のヒットを得ることはありません。 –

+0

Marc Bが言ったこと、または10〜15秒の間隔でタイマーを作動させて、あなたのサーバーがまだページ上にあることを知らせるためにあなたのサーバーをpingすることができます。 pingが来なくなると、ユーザーは退去したとみなすことができます。 – msigman

+0

あなたはそれを答えとして書いてみましょう.2本の裏返しとデモかもしれません。私はあなたに投票するでしょう〜) –

答えて

2

編集:私は$ idに「塩漬け」を追加しました。分かりませんが、私はそれがもっとユニークであると感じています。マイクロ秒の使用が、この
jQueryのようなだけ余分確認する

何か:StayAlive.phpへ Ajaxリクエストごとに10秒

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(); 
?> 
2

ユーザーがページを離れるとき(次のページを読み込む必要はありません)、次の方法でページにAjaxリクエストを送信できます。

$(window).unload(function() { 
$.ajax({ 
    type: "POST", 
    url: "yourpage.php", 
    data: { 
     command: "disconnect" 
    }, 
    dataType: "json", 
    async: false, 
    success: function(data) {} 
}); 
}); 

あなたは、彼らがページをロードする際、ユーザーのタイムスタンプを生成するJavaScriptを作成し、彼らが去るとき.phpのページにそれを渡すことができます。タイムスタンプの差を計算して、ページに費やした時間を計算します。

関連する問題