在会话中存储用户数据 - 来自DB

时间:2012-11-06 17:52:52

标签: php mysql database session

如果我有登录系统或类似的东西,我会在会话中存储session_id和user_id,但是与某个用户有关的任何其他数据都存储在数据库中。我见过人们在会话中存储其他数据(用户名,电子邮件等)的其他脚本。

我只是想知道,哪个会“更好”?在数据库的会话中保存数据或具有较少的会话并从数据库中获取数据?

谢谢!

3 个答案:

答案 0 :(得分:3)

答案是取决于,在您的情况下,它可能甚至不重要。

会话方法

  • 减少查询次数=更快

数据库方法

  • 会话中较少的数据可防止破坏
  • 立即反映对数据库的更新,而不必担心同时更新会话

答案 1 :(得分:2)

您可以在$_SESSION中存储您喜欢的任何信息。我相信它最高可达128Mb - 限制由memory_limit控制,默认为128Mb。你可以改变它。

但是,根据经验,我会存储与查询数据库相关和/或更便宜的信息 - 以另一种方式尽可能少

毫无疑问,使用会有很大差异,但会话通常包含以下内容:

  • 用户名
  • 完整显示名称
  • 电子邮件地址
  • Id(用户或其他)
  • 权限
  • 用户组
  • 散列
  • 表单输入错误(暂时,突出显示表单错误)

出于速度/规模的原因,不建议存储大块数据/信息。

如果您的网站/平台需要在以后进行扩展,那么在适当的时候,您最好查看write-through caching或类似的常用/必需数据(例如Memcached)并将绝大多数数据存储在您的数据库中 - 应该在哪里。

希望这有帮助。

答案 2 :(得分:2)

实践表明,最好将数据保存在数据库中(对于> =中型项目(服务器场/会话中的大量数据)或增强任何类型项目的安全性(例如共享主机))。即使用户ID也不应保留在$_SESSION中。哈希,快速消息,快速设置 - 这应该是$_SESSION

但是如果你还有一个问题“我是否需要在DB中保存会话”,那么很可能你不应该把它保存在DB中。