Intereting Posts

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

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

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

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

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

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

    ОБНОВИТЬ:

    <!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> 

    И внутренний скрипт:

     <?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

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

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

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

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

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

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

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

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

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

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