Как отследить длительность посещения сайта на 1 страницу - PullRequest
0 голосов
/ 17 марта 2012

У меня есть страница веб-сайта, на которой большинство посетителей будет тратить свое время. Сайт использует PHP с Codeigniter и jQuery.

Проблема: Однако я считаю, что системы отслеживания, такие как Piwik, рассчитывают время, проведенное на странице, вычитая время, которое посетитель оставляет эту страницу, на новой странице из времени, которое он загружает. страницы.

Есть ли способ обойти это? Может быть, использовать javascript для запуска системы отслеживания, чтобы он знал, что посетитель покидает страницу?

Ответы [ 2 ]

2 голосов
/ 18 марта 2012

Вы можете использовать следующее для отправки Ajax-запроса на страницу, когда пользователь покидает страницу (ему не обязательно загружать новую).

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

Вы можете создать JavaScriptкоторый генерирует временную метку пользователя, когда он загружает страницу, и передает ее на страницу .php, когда он уходит.Рассчитайте разницу во временных метках, чтобы определить, сколько времени они провели на странице.

2 голосов
/ 17 марта 2012

Редактировать: я добавил немного "засолки" в $ id, я не знаю ... У меня такое ощущение, что он еще более уникален, хотя я думаю, что маловероятно, что будут похожие идентификаторы из-за использование микросекунд, но только для большей уверенности

как-то так
JQuery: Ajax-запрос к StayAlive.php каждые 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();
?>
...