我正在使用Zend_Session管理我的用户会话,而我正在寻找在我的应用程序中实现一个“记住我”选项,让用户在两周左右的时间内登录.
我注意到Zend_Session已经有一个内置的函数Zend_Session :: rememberMe,但是我不确定该函数逻辑是否正确用作持久登录.
本质上,rememberMe功能只是延长了活动的会话过期日期,这意味着如果用户使用了记住我的选项,他将在活动会话中保持登录2周.
这带来了两个主要问题.
>我正在数据库中存储会话,这意味着所有这些非活动用户在我的会话表中存储了2周.我有超过50k个非活动会话,并且会损害应用程序的性能.
>我想知道一个用户在24小时不活动后是否回到该网站,并重新验证他的信息.当他的会议开始时,我不能确定他是否在1小时或1周后回来,因为他有同样的活动会话ID.
我读过,如果我想实现一个记住我的功能,我不应该使用会话cookie,我应该创建另一个“登录cookie”来记住散列的user_id和令牌.这里是完整的解释:What is the best way to implement “remember me” for a website?
1注意到Zend的“记住我”功能的方法的主要缺陷.有些人不明白,当尝试延长会话生命周期时,无论会话处理程序是文件还是基于数据库,都有待处理.允许陈旧的会话持续超过合理的时间框架是一个薄弱的解决方案,您最好实现由您提供的链接概述的自定义Cookie解决方案.
原文链接:https://www.f2er.com/php/132410.html直接回答你的问题;谁知道.也许他们没有考虑到许多用户选择数据库会话处理的事实,并且在文件系统上堆积陈旧的会话cookie对性能没有直接的影响.
此外,如果您想跟踪用户是否回来并重新建立了一个陈旧的会话,那么您可以在会话跟踪表中添加一个’updated_at’列.那么你会有两个时间戳列; created_at和updated_at,这将有助于您做出这一决定.