session
变量$_SESSION['']
的范围是什么?如果我将一堆网页调查一个接一个地串在一起,session variable
会在一定时间后过期,还是只要你不关闭浏览器就会存在?如果您休眠计算机会发生什么?
我在休眠后似乎丢失了一个会话变量,我不确定这是否是问题或是否存在其他问题。
答案 0 :(得分:2)
由于多种原因,整个会话(不仅仅是单个变量)可以继续或丢失。
在默认配置中,当浏览器关闭时,会话意味着“丢失”,因为浏览器将删除标识会话的cookie。它仍然在服务器上的某个位置,直到会话垃圾收集删除它。因此,长时间处于空闲状态的浏览器可能仍然会松开它的会话,因为PHP会删除最近没有使用过的浏览器。
检查the configuration。特别是,如果您需要延长会话时间,可能需要根据需要调整“session.gc_maxlifetime”和“session.cookie_lifetime”。
答案 1 :(得分:1)
会话变量不会过期。 会话过期,以session_gc.maxlifetime
and other configuration options为准。
会话与浏览器无关。但是,浏览器可能选择不将所需信息发送到服务器,以使服务器恢复先前的会话。当浏览器将所有cookie视为会话cookie时,通常会发生这种情况。
此上下文中的术语会话cookie 并不意味着包含会话标识符或会话变量的cookie。相反,它是一个cookie,一旦浏览器关闭就会消失(即浏览器前面的用户会话结束)。
答案 2 :(得分:1)
取决于:
0
应表示',直到浏览器关闭',但firefox / mozilla倾向于查看它(由于他们'恢复会话'功能)为'永远'(这是恕我直言,安全问题所以你应该在接收空会话数组时重新生成你的id)。所以:依赖于用户代理。session.gc_maxlifetime
设置,这可能会造成严重破坏。因此,换句话说,如果你的UA决定保留cookie,你的会话仍然存在,并且没有进程决定删除数据。这需要您了解UA和服务器的设置。