我应该在PHP会话中存储哪些数据?

时间:2013-11-26 21:32:58

标签: php codeigniter session codeigniter-2

我正在构建一个用户可以使用CodeIgniter登录的小应用程序

我的问题是,当用户登录时,建议在会话中存储大量用户个人信息(例如用户ID,姓名,电子邮件和电话号码)。或者我应该尝试将个人信息留在外面并仅在会话中保留他们的用户ID?

我不想不断地进行数据库查询以获取一些或用户的基本信息。

更新

我将使用数据库存储他们的所有信息,我只是想知道他们何时登录,是否建议将他们的数据存储在会话以及数据库中?

由于

3 个答案:

答案 0 :(得分:4)

您应该只在跟踪当前用户的会话中保留临时数据。在需要之前,任何其他内容都应该隐藏在数据库中。

答案 1 :(得分:2)

我不确定是否有正确的答案。

在会话中存储数据是一个很好的技巧,允许轻松访问,但请记住,根据您为持久性编写会话数据的方式,您仍然需要读取文件或数据库来获取会话数据回来了!

通常我会在会话数据中存储有关用户及其当前会话的非常基本的信息。它是从数据库中提取的所有数据,暂时存储在会话中,并且被吹走的会话没有任何实际效果,因为它们将被强制重新登录,我将从数据库重新填充数据

您在上面列出的具体信息应该是安全的。

在存储过多个人信息之前,请确保您了解会话周围的潜在安全问题。这个SO问题有一些很好的信息:PHP Session Fixation / Hijacking

答案 2 :(得分:1)

会话不是存储数据的可靠位置。每当用户注销(或者只是离开他们的计算机一小时),他们的会话就会被删除。您需要保留的任何信息都应存储在持久数据存储(通常是数据库)中。该会话用于提供与用户当前与您网站的互动相关的信息。这可能包括登录用户的用户ID,闪烁(下次请求中显示的一次性警报,然后被删除)等。

基本上,只会在会话中存储您不关心丢失的内容。

另外,不要担心进行数据库查询。您可以稍后处理 - 如果它成为真正的问题。