在网站上存储/跟踪用户活动

时间:2013-10-15 15:07:27

标签: php html mysql database

我想知道在网站上存储/跟踪用户活动的最佳方式是什么。我正在考虑用户活动的用户活动,用户访问过的网页,访问了多少次,他/她的访问时间(即时间戳)。

我目前正考虑在我的数据库中为我网站上的每个网页创建多个表格,每个网页都会跟踪我网站上用户活动的一个方面。例如,1表包含访问该网页的每个用户的时间戳和用户ID,另一个表存储他们在网页上完成的操作(例如喜欢的东西)

这是一种跟踪用户活动的好方法,还是有更好的其他方法?

PS:我在网站上使用PHP和MYSQL,并且这样做是为了改进我的编码,所以我不会使用谷歌分析或任何类似的东西。

4 个答案:

答案 0 :(得分:6)

是的,将所有内容存储在数据库中。有一个供用户访问的表,一个用于用户交互的表。

首先要有一个包含用户ID的表page_visits(这是您要解决的第一个问题 - 如何唯一地识别访问者。使用他们的IP和/或用户代理识别它们?创建一个cookie是指一个唯一的ID?根据您的目标有不同的方法 - 没有一种是100%防范的)以及他们访问的页面ID或URL以及时间戳。

添加表格以跟踪互动。你如何捕获事件取决于你,你使用Javascript或jQuery来发起一个AJAX调用来记录像点击一样的事件吗?此表可能包含user_idtimestampaction_performedsource_page_id等字段。

您决定实施的方式完全取决于您,但数据库可能是最佳选择。

答案 1 :(得分:2)

在不进行整个GDPR辩论的情况下,尽管您可能希望在进一步讨论之前将其考虑在内,但我将继续进行以下操作。

我将有一个单独的表来存储用户活动,尽管我可能想研究使用其他方法来存储此数据。也许是mongoDB,并将每个会话的所有详细信息存储到json文件中。但出于本练习的目的,您可以只使用MySQL。

我建议根据会话添加条目,以便用户活动表看起来类似于:

 1. usserId
 2. location or ip
 3. referrer
 4. timestamp
 5. sessionToken 

我要做的第二件事是为会话表提供另一个表,并在其中存储所有带有时间戳的详细信息。

 1. sessionToken
 2. url
 3. timestamp

现在,您可以从用户活动表中查询最近访问过该网站的x位用户,并且当您在界面中选择其中一位时,您可以看到其访问的所有详细信息。就您的MySQL查询而言,这可能是查看此信息的省力方法。

这是一个非常复杂的过程的雏形,多年来,许多公司开始使用它,其名称为Real User Monitoring

答案 2 :(得分:1)

尝试在数据库中创建表以存储必要的信息。

我可以考虑存储他们的IP地址

获取一些GEO信息,您可以使用该IP地址获取并存储他们所在的国家/地区。

您可以在访问您的网站之前存储他们所在的网页。

他们访问您网站的次数及访问过的网页次数以及每页次数。

可以使用

获取IP地址
$_SERVER['REMOTE_ADDR']

$_SERVER['HTTP_X_FORWARDED_FOR']
获取他们国家的地理信息可以从许多网站获得...通常你需要支付它,如果你想要最新信息...一些人关闭免费旧信息仍然非常有用。

以下是您支付的GEO信息的良好提供商,但它非常便宜

http://dev.maxmind.com/geoip/geoip2/web-services/

访问量只是在他们到达时抓住他们的IP地址,在数据库中搜索该IP以及是否存在然后将访问次数增加1.如果没有创建新的访问者。在每个单独的页面上也进行相同的增量访问。

使用此功能获取他们在访问您的网站之前所使用的网址

$_SERVER['HTTP_REFERER']

所以像这样的表:

userId | userIP | userCountry | visits | webpage1Visits | webpage2Visits | webpage3Visits

假设你没有数千页,这可能适用于十几页。

你可以存储大量其他东西,比如平均时间等等,但这是基本的东西。

尝试它,当你遇到问题的时候会问更多问题,人们会帮忙:)。

答案 3 :(得分:0)

您可以为每个网页使用标记并保存增加的标记值,如果他点击相应用户登录数据库的网页以跟踪他正在点击的页面(这仅适用于拥有用户数据库的网页) )。