我有一个网站,将注册用户的网站首选项存储在MySQL数据库中,我希望对此进行修改,以便非注册用户也可以使用浏览器cookie从网站配置中受益。
有没有一种常见的方法可以做到这一点?我的想法是创建一个包含以下字段的附加数据库表:
id
unique_cookie_hash
site_preferences
唯一cookie哈希是存储在访问者cookie中的内容,站点首选项是包含访客用户设置的JSON编码字符串。因此,对于未登录该站点的用户,将检查cookie。如果cookie存在,它将尝试通过cookie中存储的值拉出首选项。如果cookie不存在或未找到匹配项,该站点将创建一个并为其分配一些默认设置值。
当访客进行更改时,网站将尝试在其unique_cookie_hash上运行UPDATE查询。
我认为这会起作用(大多数网站都是这样做的吗?)但是因为它对我来说是一个新概念,我想知道是否有人知道任何好的教程或'得到'要注意与这种方法。
感谢。
答案 0 :(得分:3)
这样可行,请注意,通过将选项序列化为JSON字符串,您无法从中选择任何内容。
因此,如果你想知道有多少注册人喜欢颜色方案A,你需要用PHP完成所有代码(至少以非繁琐的方式)。
答案 1 :(得分:0)
PHP有自己的一套用于管理会话的功能,还有替代(有些人可能会说更好)的库用于会话处理。这是一个复杂的问题,出现了意想不到的安全考虑因素,所以如果没有真正研究它,我就不会尝试自制解决方案。
假设您已经研究了如何安全地存储会话信息,您可以在那里保留用户的站点首选项,当用户登录他们的帐户时,只需将他们存储的首选项复制到他们的会话中,该会话实际上会对其进行操作
答案 2 :(得分:-3)
这取决于设置的数量,但一般情况下我根本不会打扰数据库,而是将它们存储在cookie中。