在PHP和MySQL中使用cookie - 良好的做​​法?

时间:2011-04-14 04:00:38

标签: php mysql cookies

我有一个网站,将注册用户的网站首选项存储在MySQL数据库中,我希望对此进行修改,以便非注册用户也可以使用浏览器cookie从网站配置中受益。

有没有一种常见的方法可以做到这一点?我的想法是创建一个包含以下字段的附加数据库表:

id
unique_cookie_hash
site_preferences

唯一cookie哈希是存储在访问者cookie中的内容,站点首选项是包含访客用户设置的JSON编码字符串。因此,对于未登录该站点的用户,将检查cookie。如果cookie存在,它将尝试通过cookie中存储的值拉出首选项。如果cookie不存在或未找到匹配项,该站点将创建一个并为其分配一些默认设置值。

当访客进行更改时,网站将尝试在其unique_cookie_hash上运行UPDATE查询。

我认为这会起作用(大多数网站都是这样做的吗?)但是因为它对我来说是一个新概念,我想知道是否有人知道任何好的教程或'得到'要注意与这种方法。

感谢。

3 个答案:

答案 0 :(得分:3)

这样可行,请注意,通过将选项序列化为JSON字符串,您无法从中选择任何内容。

因此,如果你想知道有多少注册人喜欢颜色方案A,你需要用PHP完成所有代码(至少以非繁琐的方式)。

答案 1 :(得分:0)

PHP有自己的一套用于管理会话的功能,还有替代(有些人可能会说更好)的库用于会话处理。这是一个复杂的问题,出现了意想不到的安全考虑因素,所以如果没有真正研究它,我就不会尝试自制解决方案。

假设您已经研究了如何安全地存储会话信息,您可以在那里保留用户的站点首选项,当用户登录他们的帐户时,只需将他们存储的首选项复制到他们的会话中,该会话实际上会对其进行操作

答案 2 :(得分:-3)

这取决于设置的数量,但一般情况下我根本不会打扰数据库,而是将它们存储在cookie中。