我想知道在网站上存储/跟踪用户活动的最佳方式是什么。我正在考虑用户活动的用户活动,用户访问过的网页,访问了多少次,他/她的访问时间(即时间戳)。
我目前正考虑在我的数据库中为我网站上的每个网页创建多个表格,每个网页都会跟踪我网站上用户活动的一个方面。例如,1表包含访问该网页的每个用户的时间戳和用户ID,另一个表存储他们在网页上完成的操作(例如喜欢的东西)
这是一种跟踪用户活动的好方法,还是有更好的其他方法?
PS:我在网站上使用PHP和MYSQL,并且这样做是为了改进我的编码,所以我不会使用谷歌分析或任何类似的东西。
答案 0 :(得分:6)
是的,将所有内容存储在数据库中。有一个供用户访问的表,一个用于用户交互的表。
首先要有一个包含用户ID的表page_visits
(这是您要解决的第一个问题 - 如何唯一地识别访问者。使用他们的IP和/或用户代理识别它们?创建一个cookie是指一个唯一的ID?根据您的目标有不同的方法 - 没有一种是100%防范的)以及他们访问的页面ID或URL以及时间戳。
添加表格以跟踪互动。你如何捕获事件取决于你,你使用Javascript或jQuery来发起一个AJAX调用来记录像点击一样的事件吗?此表可能包含user_id
,timestamp
,action_performed
,source_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)
您可以为每个网页使用标记并保存增加的标记值,如果他点击相应用户登录数据库的网页以跟踪他正在点击的页面(这仅适用于拥有用户数据库的网页) )。