【问题标题】:Why PHP session destroys when clear browser's cookie为什么清除浏览器的cookie时PHP会话会破坏
【发布时间】:2015-12-21 09:41:17
【问题描述】:

我对 PHP 会话和会话 cookie 有点困惑。

让我举个 www.example.com 的例子来问我的问题。

当我登录 www.example.com 时,它会启动一个会话。所以我在这个网站上以用户身份登录。

现在,当我清除浏览器中的 cookie 时,它​​会删除所有浏览器 cookie。

我的问题是 - 即使我没有单击注销按钮来销毁会话,当我清除浏览器 cookie 时,www.example.com 上的会话是否也会被破坏?

这就解释了我想问的问题。

即使您没有在网站上执行任何会调用该函数来销毁会话的任何操作,清除浏览器 cookie 是否会自动销毁 PHP 会话??

【问题讨论】:

  • 清除浏览器cookie不会破坏服务器会话,但会删除本地存储的cookie中的会话ID

标签: php session cookies


【解决方案1】:

为什么清除浏览器的 cookie 会破坏 PHP 会话

清除 cookie 后 PHP 不会破坏会话,它只是无法再接收会话 id(存储在 cookie 中),因此会话数据和当前用户连接之间的链接丢失。 PHP 稍后会根据其配置销毁会话。

清除浏览器 cookie 是否会自动破坏 PHP 会话? 当你没有在一个网站上做任何事情时 销毁会话的函数??

不,它没有。 PHP 对会话生命周期有限制(参见 php.ini、session.gc_maxlifetimesession.cookie_lifetime),它们基本上定义了会话生命周期。除了官方手册,还有good explanation这些设置如何影响会话生命周期。

【讨论】:

    【解决方案2】:

    如果您仔细观察,例如通过 Chrome/Firefox 等上的网络检查器,您可以看到 PHPSESSIONID 被设置为 cookie。因此,如果您删除所有 cookie,那么我想您也会删除此 cookie,因此会话不知道要使用什么 ID。

    【讨论】:

      【解决方案3】:

      这是会话机制。你可以阅读更多here

      关于会话(通常是服务器会话)。 Server 将所有 Session 用户数据保存在 Server 上,并通过 Session ID 从客户端(通过 >Cookies)。

      第一次,客户端向服务器发送请求。服务器没有从这个请求中找到任何 Session ID 并且响应一个正常的网页并且包括 SET-COOKIE: SessionID=xyz

      从现在开始,来自客户端的每个请求都将包含 Session ID = xyz(通过 Cookies)。

      如果您清除 Cookies,那么 Session ID 肯定消失了

      【讨论】:

        猜你喜欢
        • 2021-07-07
        • 2014-04-04
        • 2018-08-26
        • 1970-01-01
        • 2016-04-30
        • 1970-01-01
        • 2013-06-11
        • 2014-02-21
        • 2020-07-15
        相关资源
        最近更新 更多