【问题标题】:When does a PHP session end?PHP 会话何时结束?
【发布时间】:2013-11-21 19:07:10
【问题描述】:

我在网上似乎找不到确切的答案,所以我在这里问。

当一个人在.php 脚本中使用session_start(); 并保存一些值时,会话何时结束?那么这些值什么时候不能再访问了呢?

我发现刷新页面或以代码方式停止会话会停止它,并且可能的超时也会停止会话。但是离开站点并在一分钟后返回呢?并关闭浏览器?

至于最后一个,在手机上,“关闭浏览器”是什么意思?关闭标签,甚至最小化网站?

【问题讨论】:

  • 简短的回答是它取决于浏览器。
  • 可能取决于您的服务器配置

标签: php session


【解决方案1】:

如果您的会话值未链接到任何 cookie,则会话将在 Windows 浏览器关闭时结束。

如果您的会话变量来自 cookie,则会话将在 cookie 文件中指定的时间后结束。

在 PHP 中,会话使用 session 类型的 cookie。服务器端,会话信息不断被删除。

要在 php 中设置 cookie 的生命周期,可以在 session_start 之前使用函数 session_set_cookie_params:

session_set_cookie_params(3600,"/");
session_start();

例如,3600 秒是一小时,2 小时是 3600*2 = 7200。

但它是一个会话cookie,浏览器可以自己让它过期,如果你想保存更长的会话(比如记住登录),你需要将数据保存在服务器和客户端的标准cookie。

使用 cookie 时离开网站不会中断会话。

【讨论】:

    【解决方案2】:

    有两件事可以有效地结束会话:

    1. 将其链接到浏览器的 cookie 被破坏。 PHP 通常使用会话 cookie。这些在浏览器关闭时被删除。 浏览器,而不是标签。它们也可以手动删除。
    2. 当服务器在一定时间内(在session.gc_maxlifetime 中定义)没有收到来自浏览器的带有会话 cookie 的请求时,它会清理会话数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-18
      • 2013-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      • 1970-01-01
      相关资源
      最近更新 更多