gpt4 book ai didi

PHP session_destroy 和 session 范围?

转载 作者:搜寻专家 更新时间:2023-10-31 21:14:38 28 4
gpt4 key购买 nike

好吧,那里有很多“简单 session ”问题,但我似乎找不到我要找的东西。这让我有点烦恼,因为 PHP 文档似乎没有很好地解释这一点。

三重问题。

  1. 它说 session_destroy() 会清除 session 数据,但不会清除全局变量。所以它删除数据但变量仍然完好无损?文档中的全局变量是什么意思?

  2. 我可以使用哪些不同类型的方法来销毁 session 数据,session_destroy 还不够吗?正如我在一些代码示例中看到的那样,您为什么要使用以下编码:

    session_start();
    $_SESSION = array();
    session_destroy();
  3. session 似乎跨浏览器实例持续存在。例如,IE9 在打开两个不同的浏览器时将保持相同的 session ID。与 Chrome 相同。只有当我关闭所有浏览器时,我才会得到一个新的 session ID。所有浏览器都是这样吗?我想知道这样我就可以在编码过程中牢记这一点——不想稍后发现某些浏览器不是持久的,而我的代码认为它是持久的,然后冒着产生各种错误的风险。

提前感谢任何可以帮助我回答这些问题的人。

最佳答案

  1. $_SESSION是 super 全局变量
  2. session_destroy 函数基本就够了。它删除存储所有 session 变量的服务器上的 session_file 并删除 session cookie。变量在 session_destroy 调用之后仍在内存中,但更改这些值没有任何效果(除非您再次调用 session_start())。

    但是代码片段也从内存中删除了变量。这一点很重要,例如,如果应用程序稍后在同一请求中检查 $_SESSION['admin'] 以查看用户是否具有管理员权限。

    需要session_start() 函数,因为您需要先加载 session 才能删除它。

  3. session 不会跨不同的浏览器持续存在,但它们会跨同一浏览器的所有窗口/选项卡持续存在。如果您关闭浏览器会发生什么,实际上取决于您的 PHP-ini 设置。 session.cookie_lifetime 定义浏览器应保留 cookie 的时间(以秒为单位)(即使在重启后)。如果 session.cookie_lifetime 设置为 0,浏览器将在关闭时删除 session cookie。

    session.gc_maxlifetime 定义网络服务器保留 session 文件的时间(没有 session 文件,session-cookie 无效)

关于PHP session_destroy 和 session 范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11740550/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com