是否存在执行此操作的插件?如果没有,我理论上可以创建一个跟踪此类信息的 mysql 数据库吗?
例如,假设我有一个以用户名作为主键的表 post_views,并且每次用户来时,我都会检查该表中具有帖子 ID 的列是否存在值。
如果是,那么做一些事情......如果不是,那么,创建列并分配一个值 1 或其他东西。
这样的事情可行吗?对不起,我是一个mysql菜鸟。
谢谢!
嗯,这是可行的,是的。
你可以:
对于登录用户:创建一个关系表,比如 users_posts
id | user_id | post_id
在每个帖子视图中,将用户 ID 和帖子 ID 插入到此表中(如果您愿意,可以添加其他信息,例如阅读帖子的日期)。对该表的查询将告诉您用户打开的所有页面,或者相反,您可以检查该页面是否被该用户看到。从你所说的来看,这是一个比你想象的更可行的表模式;
对于未登录的用户:在没有用户 ID 的情况下,您可以使用 cookie:在 cookie 中写入用户信息(IP、UserAgent 等)和帖子 ID;只要 cookie 没有被清除(或过期),您仍然会知道用户看到了什么。为了增加甜头:一旦用户登录,您就可以将此基于 cookie 的信息转换为第 2 点中的方法)。
好吧,再想一想,cookie 不是必需的,您也可以在这里使用数据库,但是该表不会存储用户 ID,而是其他信息(您可以使用带有添加列的同一个表,或者专门为未登录的用户。我会选择后者)
但请记住,IP、用户代理和此类其他信息不可靠,并且可能导致问题 - 第一个可以由不同的用户共享,第二个很容易被欺骗。最好的做法是忽略这一点 3) 并始终只跟踪登录用户,这样您就不会遇到问题。