PHP跟踪用户流

时间:2017-08-25 17:40:14

标签: php mysql flow

我遇到了一个让我的生活变得困难的问题。 :( 我正在尝试跟踪网站上的详细用户流程(未安装GA!)。

所以基本上我需要在选择页面ID35时获取信息我需要看到登陆该页面的用户他们的流程是什么?

因此用户#1访问了页面ID35 =>第ID31页=>第ID84页=>剩下 用户#2访问过页面ID35 => page83 => page124 => page1 =>剩下 ...

因此,1位用户可以访问2页,但也可以访问50页......我需要按照确切的顺序跟踪它们的打开方式。

我试图创建MySQL数据库来跟踪我设置的所有内容。

-ID

-ref_page(reff)

-page

但经过一些测试后,它没有产生我需要的结果,因为它搞乱了......分支太多(太多可能的变化)..

是否有人解决了在网站上跟踪用户流量的问题?

谢谢!

1 个答案:

答案 0 :(得分:2)

一种方法是使用$_SESSION var来存储用户流...这将需要更少的存储空间...更少的频繁插入数据库......并且可以大大简化管理。 / p>

将重新设计数据库以适应:

表:用户流

字段: user_id
字段: session_id
字段: flowStr = VARCHAR(255)

用于跟踪特定会话中特定用户的页面流的PHP脚本如下所示 (请注意评论)

文件: page_tracker.php

<?php
session_start();
//Initialize session pageflow array if not already set
if(!isset($_SESSION['pageflow'])){
    $_SESSION['pageflow'] = [];
}

//We need to make sure not to store repeated requests for the same page, this is a waste of space and is of no value
if(!isset($_SESSION['cur_page_id']) || $_SESSION['cur_page_id'] != THIS_PAGE_ID){
    //current page is different than the last... let's store it now
    array_push($_SESSION['pageflow'], THIS_PAGE_ID);
    $_SESSION['cur_page_id'] = THIS_PAGE_ID;
}

现在让我们进行测试(注意:需要设置CONST THIS_PAGE_ID才能使其正常工作):

文件: sandbox.php

<a href="sandbox.php">Page 0</a>
<a href="sandbox_one.php">Page 1</a>
<?php
CONST THIS_PAGE_ID = 0;

require 'page_tracker.php';

$pageflowStr = implode(';', $_SESSION['pageflow']);
echo $pageflowStr;
?>

文件: sanbox_one.php

<a href="sandbox.php">Page 0</a>
<a href="sandbox_one.php">Page 1</a>
<?php
CONST THIS_PAGE_ID = 1;

require 'page_tracker.php';

$pageflowStr = implode(';', $_SESSION['pageflow']);
echo $pageflowStr;
?>

稍后,当您准备好...时,您可以将$pageflowStr的值存储在数据库中( userflow.flowStr )。

希望这有帮助!