2010-07-04 110 views
3

我试图找出如果这是更好地保存我的用户的数据在一个会话cookie(如密码,用户名等),并更新只有当我从我的PHP改变MYSQL数据库的cookie,如何设置我的登录系统?

将用户的用户名和用户ID存储在会话cookie中,并在每次需要获取用户数据时将其连接到MYSQL数据库。

哪一个是更好的方法..?我从来没有实际设置登录系统,所以任何建议将不胜感激。

回答

2

会话和cookie不一样。会话只是将其会话ID存储在cookie(客户端)以及服务器上的所有会话数据中。我认为你真的指的是你使用“cookie”这个词的地方。

继续前进以回答您的实际问题,将大部分用户详细信息存储在会话中是绝对安全的。尽管您不需要将密码存储在会话中,因为您仅将它用于身份验证。除此之外,最理想的方法是在会话中缓存常用用户数据(您可能会在每个页面上显示的内容),以保存到DB的旅程。

克里斯提到的对用户数据的更改几乎是不存在的,因为除了用户自己以外,用户数据不会被任何人修改,在这种情况下,您可以更新会话以及数据库。

+0

+1以进入我所做的更多细节。 – 2010-07-04 02:24:39

1

好问题。我已将用户数据保存在PHP会话中。因为这是所有的服务器端,所以这样做应该是安全的,并且避免额外的数据库查找。

不利之处在于,您不会自动提取在该会话期间发生的数据库更改......但用户数据通常不会如此动态以致我不在意。

+0

有关更新数据的任何提示...? – mattsven 2010-07-04 01:43:41

1

您不应该在cookie中存储密码。我会将详细信息存储在数据库中,并使用memcached来减少数据库的负载。

+0

我猜他的意思是会话变量,而不是会话cookie。存储在会话“cookie”中的唯一东西是用于将客户端绑定到特定会话的会话ID。所有其他会话数据都存储在服务器端。 – 2010-07-04 02:08:15

+0

@Lèsemajesté可能,我想避免任何混淆,因为他的第一个选项指定了“会话cookie”。所以,我提供了一般情况。我会避免使用会话,以避免盯着/恢复会话的开销,以及 - 更重要的是 - 避免必须记住在需要此数据的情况下恢复会话。另外,我确实认为memcached为缓存数据提供了更多选项。它肯定为群集Web服务器提供了一个更好的解决方案,您必须将会话数据存储在中央数据库中,以便将数据提供给所有服务器。 – 2010-07-04 02:24:06

+0

memcached对于大型应用程序来说是一个很好的解决方案,但是对于OP正在尝试做什么来说,这将是矫枉过正,特别是因为他提到这是他第一次构建这样的系统。 – casablanca 2010-07-04 02:38:13