【问题标题】:"Favorites" feature using cookies and sessions (PHP & CodeIgniter)使用 cookie 和会话(PHP 和 CodeIgniter)的“收藏夹”功能
【发布时间】:2014-03-13 03:57:23
【问题描述】:

我正在尝试为我的网站实现“收藏夹”功能,我想知道如何存储这些数据。如果可能的话,我想做的是让用户最喜欢的东西并将其存储在数据库中——这样我就可以使用数据来个性化搜索结果。

我也在尝试拥有它,以便在未登录状态的收藏夹到登录状态的收藏夹之间平稳过渡(允许用户匿名保存收藏夹,但如果登录转移/要求将其转移到他的帐户)

我怎样才能长期存储这些数据?我目前正在使用数据库加密会话,并且正在考虑延长会话时间或将其设置为不过期。这可能会导致我遇到一些安全问题,不是吗?

非常感谢您的帮助,

干杯。

【问题讨论】:

  • 你所说的“……有用户喜欢的东西……”是什么意思? “事物”究竟是什么?页数?类别?此外,您可能希望将此数据存储在数据库中,因为会话(即使设置为不过期)仍然可能过期。不要相信 cookie 来保存这类数据。另外,如果收藏夹使用不同的计算机登录,您是否希望它们仍然存在?

标签: php session codeigniter cookies


【解决方案1】:

好吧,如果我理解,您想要的是注册用户可以将“某物”设置为收藏夹,因为这是 M:N 关系(严格从数据库的角度来看),我建议使用表存储这些关系,即假设你有一个用户和一个主题表,SQL 会像这样:

create table favorite(user_id integer not null references user, topic_id integer not null references topic);

至少这是大多数 DB 书籍会告诉您的。如果您没有用户表(我想您有一个用于要标记为收藏的“某物”),您可以只存储您在用户登录系统时分配给用户的 id。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    从您的匿名会话中创建实际用户。在没有登录凭据的情况下将它们持久保存在数据库中,并将收藏夹或您存储的任何其他内容与其用户 ID 相关联。如果他们在清除 cookie 之前注册,您只需将他们的登录名/个人资料添加到现有的用户 ID 中,他们创建的所有收藏夹都已经在正确的位置。一个系统同时用于登录和注销用户,而不是两个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-19
      • 2014-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多