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

15

我在考虑如何最好地存储/跟踪网站上用户的活动。我想要追踪用户访问哪个网页,她访问了多少次以及他/她的访问时间戳。

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

这种跟踪用户活动的方法是否可取?还有其他更好的方法吗?

注:我正在使用PHP和MYSQL开发网站,并且正在这样做是为了提高我的编码水平,因此不会使用谷歌分析或类似工具。

4个回答

11

将所有内容保存在数据库中。为用户访问、用户交互等各自创建一个表。

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

添加一个表来跟踪交互。如何捕获事件取决于您,您是否使用JavaScript或jQuery通过发出AJAX调用来记录单击等事件?此表可以包含字段,例如user_idtimestampaction_performedsource_page_id

您决定实现的方式完全取决于您,但使用数据库可能是最好的选择。


我假设你所说的用户代理是指数据库中的用户ID?如果是这样,与IP地址可以被伪造相比,使用IP地址是否有任何实际好处?我之所以问这个问题,是因为我在考虑将用户ID记录在数据库中作为身份识别手段。 - Kenneth .J
用户代理 = 网页浏览器,使用 IP - 您还可以确定地理信息(如果需要),还可以返回访问次数等信息,但是如果他们没有登录并且没有“用户 ID”,该怎么办? - Brian
1
用户代理包含操作系统、浏览器版本等信息。我建议的识别方法是生成一个随机的字母和数字字符串,确保它是唯一的,并将其作为 cookie 存储到用户端。这样,即使他们的 IP 地址发生变化(只要他们没有清除 cookie),你也可以在他们返回网站时跟踪他们。 - Jonathon

3

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

我能想到的是,可以存储他们的IP地址。

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

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

他们访问您网站的次数、访问的页面及每个页面的访问次数都可以被存储。

IP地址可以通过获取得到。

$_SERVER['REMOTE_ADDR']

并且

$_SERVER['HTTP_X_FORWARDED_FOR']

可以从许多网站获取地理信息以获得他们的国家...如果您需要最新信息,通常需要付费...有些人提供免费的旧信息,仍然非常有用。

这是一个很好的提供者地理信息,您需要付费,但价格非常便宜。

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

要统计访问量,只需在访客到达时获取其IP地址,搜索您的数据库以查找该IP地址,如果存在,则将访问次数加1。如果不存在,则创建一个新访客。对于每个单独的页面访问也进行相同的递增操作。

使用此方法获取他们访问您网站之前所在的URL。

$_SERVER['HTTP_REFERER']

因此,像这样的表格:

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

假设您没有成千上万的页面,这对于十几个页面可能有效。还有很多其他可以存储的内容,例如平均停留时间等等,但这是基本内容。尝试它,当您在途中遇到问题时,请提出更多问题,人们会帮助您 :)

2

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


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 查询而言,这可能是查看此信息的最轻松的方法。

这只是对一个非常复杂的过程的初步了解,多年来很多公司开始使用它,它被称为真实用户监测


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接