好的,所以我知道服务器上的默认时间会话变量是1440秒或24分钟。那么变量的目的是什么,如果它们只是作为垃圾消失了?这是否意味着我的用户每24分钟会被注销,因为会话变量正在更新?对于我来说,将session.gc_maxlifetime更改为2周是否明智,以便用户可以保持登录两周?这一切都非常令人困惑,所以我希望提前获得任何帮助!
答案 0 :(得分:5)
您错过了会话的重点。会话通常会持续到用户关闭浏览器(这是浏览器默认删除会话cookie的点)。将会话保持开放2周意味着如果用户忘记注销,则其他人可能会打开该页面并登录。
从最后一次与页面的用户交互开始,会话处于活动状态24分钟(或任何设置)。如果您使用的是ajax,则ajax调用本身将扩展会话,因此在浏览器中打开页面时,用户将不会注销。
“记住我”或“让我登录”功能完全不同,它通常会设置另一个cookie(可能会在2周内过期),并带有一些令牌并自动登录用户并开始新会话。那么你实际上可以在数据库中持久化会话并恢复相同的会话。
请记住,会话依赖于用户浏览器中的cookie,而这个cookie通常是短暂的。
答案 1 :(得分:1)
显然不那么令人困惑,因为你是对的:会话在这段时间后(或当用户关闭浏览器时)到期并且更改该设置将影响服务器上会话存储的生命周期。当然,每次用户访问页面时,时间再次设置为24分钟。
但如果您真的想要长期存储,请使用数据库或Cookie 。你真的不应该使用会话,因为它们只是会话(英文意思是一次访问网站,所以直到用户关闭你的网站)。
答案 2 :(得分:0)
试试这个,这是数据库{{3p>中的简单存储会话
答案 3 :(得分:0)
您可以为session变量设置超时,但是它将为您的应用程序带来不必要的问题。还是要设置超时时间:
要在会话中设置一分钟的超时时间,可以这样调用上述函数:
session_start_timeout(60);