Подтвердить что ты не робот

Как отслеживать время пользователя на сайте

Я ищу, чтобы отслеживать среднее время пользователей на веб-сайте (так же, как это делает аналитика Google) для внутреннего администрирования.

Какой самый простой способ сделать это?

4b9b3361

Ответ 1

Вы можете найти время следующими способами:

  • Как только пользователь зайдет на ваш сайт, сохраните текущее время в cookie как "посещенное", и при следующем посещении вы можете его захватить, если он был установлен.
  • И более дорогой метод: когда загружается страница, запускает js-таймер и выгружает страницу на сервер, время, которое пользователь отправил, и сохранит его на db.
  • И если window.unload не работает в Opera, вы можете отправлять время на сервер каждые 5 секунд и сохранять его в БД.

Если вам нужно, я могу написать пример script.

UPDATE:

<!DOCTYPE html>
<html>
    <head>
        <title>Collect time</title>
        <script type="text/javascript" src="jquery-1.4.2.min.js"></script>
        <script type="text/javascript">
        $(function()
        {
            var start = null;
            $(window).load(function(event) {
                start = event.timeStamp;
            });
            $(window).unload(function(event) {
                var time = event.timeStamp - start;
                $.post('/collect-user-time/ajax-backend.php', {time: time});
            })
        });
        </script>
    </head>
    <body>

    </body>
</html>

И бэкэнд script:

<?php 
$time = intval($_POST['time']);
if (!file_exists('data.txt')) {
    file_put_contents('data.txt', $time . "\n");
} else {
    file_put_contents('data.txt', $time . "\n", FILE_APPEND);
}

Но, как я уже сказал, он не будет работать в браузере Opera

Ответ 2

Главным образом, о котором я могу думать:

Когда пользователь сначала нажимает на страницу, вы регистрируете, скажем, свой IP-адрес, загруженную страницу и время. Затем, используя некоторые Javascript и AJAX, когда они покидают страницу, вы используете событие unload для отправки обработчику AJAX, который записывает страницу и когда они уходят.

Вам нужно будет использовать какой-то идентификатор, кроме сеанса, для хранения посещения страницы. Скажем, у меня есть 5 экземпляров открытой страницы, поэтому вы хотите регистрировать их по отдельности. Итак, что-то вроде этого:

  • Доступ к странице, создание кода (например, страница: index.php code: 2345)
  • Храните это в таблице базы данных со своим IP-адресом и посещайте время
  • Разблокировать пожар событий, вызвать AJAX, передать страницу и код
  • Посмотрите в БД для IP, страницы и кода и запишите время отпуска

Если они снова посещают index.php, вы создадите другой код, скажем, 36789. Использовать то, что генерирует случайный GUID, лучше всего, поэтому вы можете (по существу) игнорировать любые возможности коллизий в одной и той же комбинации IP/страницы/кода.

Ответ 3

На самом деле нет эффективного способа сделать это с PHP, поскольку PHP является серверной и не дает возможности определить, когда страница была закрыта. Для этого вам нужно использовать javascript.

Что бы я сделал, это использовать javascript для запуска таймера на window.onload, а затем завершить таймер на window.onunload. Затем вы можете хранить данные и делать с ними то, что хотите.

Ответ 4

$(window).unload - очень хорошая функция для отслеживания страницы, покидающей пользователя.

но один момент - это когда выгружать окно для отправки ajax, когда-то он теперь работает, ajax не завершается, когда пользователь покидает страницу. поэтому вам нужно добавить один атрибут (async: false) в ajax, код - удар:

$.ajax({
                  type: 'POST',
                  async: false,
                  url: '/collect-user-time/ajax-backend.php',
                  data: {time: time}
              });