【问题标题】:Does the session die if a user lands on a page without session_start()?如果用户在没有 session_start() 的情况下登陆页面,会话是否会终止?
【发布时间】:2013-12-05 19:56:23
【问题描述】:

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

【问题讨论】:

  • 没有。只要会话 cookie 在浏览器中保持“活动”状态,并且服务器不核对相应的会话文件,那么会话就是“活动的”。它可能未被使用,但不会因为您碰巧点击了一个实际上并没有使用它的页面而被丢弃。如果它保持未使用的时间足够长,那么它将被清理并销毁。
  • 我想我 {{MIGHT}} 已经解决了我的问题。我从 www.domain.com 跳到 domain.com。我猜这会杀死会话,因为它被视为一个新的 URL。这听起来像是我的问题吗?将所有内容更改为 www.domain.com 时,它似乎按我希望的那样工作。

标签: php


【解决方案1】:

会话 activity 由您的代码上次访问会话数据的时间(字面意思是您上次调用 session_start() 的时间)确定。

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

所以 - 没有session_start() 的页面不会显式“终止”它,但在一段时间内不会访问会话数据 - 会。

【讨论】:

    【解决方案2】:

    没有。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-10
      • 2015-03-03
      • 1970-01-01
      • 2012-07-29
      • 2011-08-10
      • 1970-01-01
      • 1970-01-01
      • 2020-07-01
      相关资源
      最近更新 更多