如果用户在没有session_start()的情况下登录页面,会话是否会终止


Does the session die if a user lands on a page without session_start()?

我有一个有几百页的网站。大多数页面的顶部没有session_start()。我在index.php页面上有它,在那里我需要一些来自会话变量的信息。但是,如果用户导航到一个没有session_start()的页面,然后返回到index.php页面,则会话不再处于活动状态。这是正确的吗?我是否需要在每个页面上都使用它来保持活动?

会话activity由您的代码上次访问会话数据的时间(实际上是您上次调用session_start()的时间)决定。

如果自上次访问以来经过的时间超过session.gc_maxlifetime,则垃圾收集器会收集它(有一定的概率)。

因此,拥有一个没有session_start()的页面不会显式地"终止"它,但在一段时间内不访问会话数据会。

否。

这一切都基于存储在浏览器中的cookie。浏览器发送cookie,PHP使用cookie加载会话数据。如果使用session_start发送了cookie,但会话没有启动,则数据仍然存在。(通常存储在/tmp的某个地方。)