在网站上存储/跟踪用户活动 [关闭]

Posted

技术标签:

【中文标题】在网站上存储/跟踪用户活动 [关闭]【英文标题】:Storing/Tracking user activity on a website [closed] 【发布时间】:2013-10-23 11:06:18 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

添加一个表格来跟踪交互。如何捕获事件取决于您,您是否使用 javascript 或 jQuery 触发 AJAX 调用来记录点击等事件?该表可以包含user_idtimestampaction_performedsource_page_id等字段。

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

【讨论】:

我假设用户代理是指数据库中的用户 ID?如果是这样,在用户的数据库 ID 上使用 IP 是否有任何切实的好处,看看如何伪造 IP 地址?我之所以问,是因为我正在考虑将用户的 ID 记录在数据库中作为一种识别手段。 用户代理 = Web 浏览器,使用 ip - 如果需要,您还可以从中确定地理信息,还可以回访等,如果他们没有登录并且没有“用户 ID”怎么办。 用户代理包含操作系统、浏览器版本等内容。我建议识别某人的方法是生成一个随机的字母和数字字符串,确保它是唯一的并将其存储在用户作为 cookie。这样,您也可以在他们返回您的网站时跟踪他们,无论他们的 IP 是否更改(只要他们没有清除 cookie)【参考方案2】:

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

我突然想到要存储他们的 IP 地址

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

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

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

IP地址可以使用

$_SERVER['REMOTE_ADDR']

$_SERVER['HTTP_X_FORWARDED_FOR']

可以从许多网站获取获取他们所在国家/地区的地理信息...通常,如果您想获得最新信息,则必须付费...有些人关闭免费的旧信息,这仍然非常有用。

这是一个很好的 GEO 信息提供者,您需要付费但它非常便宜

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

要计算访问量,只需在他们到达时获取他们的 IP 地址,在您的数据库中搜索该 IP,如果存在,则将访问次数增加 1。如果没有,则创建一个新访问者。对每个单独的页面访问也执行相同的增量。

使用它来获取他们在访问您的网站之前所在的 URL

$_SERVER['HTTP_REFERER']

所以像这样的表:

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

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

您可以存储大量其他内容,例如平均停留时间等,但这是基本内容。

尝试一下,当您在此过程中遇到问题时提出更多问题,人们会提供帮助:)

【讨论】:

【参考方案3】:

您可以为每个网页使用标志并将增加的标志值保存到相应的用户登录数据库中以跟踪他正在单击的页面(这仅适用于具有用户数据库的网页)。

【讨论】:

【参考方案4】:

在不涉及整个 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。

【讨论】:

以上是关于在网站上存储/跟踪用户活动 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 javascript 库的用户活动跟踪 [关闭]

跟踪动态网站上的页面浏览量

是否有可用于跟踪用户活动的框架?

在 Shiny 应用程序中跟踪用户活动

跟踪网站上的用户交互

服务无法在持续的后台位置跟踪上运行