如何在网站上跟踪用户时间

Wal*_*ker 17 php jquery analytics codeigniter

我希望跟踪用户在网站上的平均时间(与Google分析相同),以便进行内部管理.

最简单的方法是什么?

Dmy*_*sun 22

您可以通过以下方式获得时间:

  1. 用户访问您的网站后,将当前时间保存为"已访问"的Cookie,并在下次访问时抓取,如果已设置.
  2. 而且更昂贵的方法:当页面加载时,启动js计时器,并在页面卸载时发送到用户发送的服务器时间并将其保存到db.
  3. 如果window.unload在Opera中不起作用,您可以每5秒向服务器发送一次时间,并将其存储到DB.

如果需要,我可以编写一个示例脚本.

更新:

<!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>
Run Code Online (Sandbox Code Playgroud)

和后端脚本:

<?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);
}
Run Code Online (Sandbox Code Playgroud)

但正如我所说,它不适用于Opera浏览器


Tar*_*rka 5

我能想到的主要方式:

当用户第一次点击页面时,您可以记录他们的IP地址,加载的页面和时间.然后,使用一些Javascript和AJAX,当他们离开页面时,您使用该unload事件发送到记录页面的AJAX处理程序以及何时离开.

除了会话之外,您还需要使用某种ID来存储页面访问.假设我打开了5个主页实例,您需要单独记录每个实例.所以,像这样:

  1. 访问该页面,生成的代码(假设页面:index.php代码:2345)
  2. 将其存储在具有IP的数据库表中,并访问时间
  3. 卸载事件触发,调用AJAX,传递页面和代码
  4. 在数据库中查找IP,页面和代码,并记录休假时间

如果他们index.php再次访问,你会生成另一个代码,比如说36789.使用生成随机GUID的东西是最好的,因此您可以(基本上)忽略相同IP /页面/代码组合上的任何冲突可能性.