gpt4 book ai didi

php - 为什么需要 session_destroy()?

转载 作者:可可西里 更新时间:2023-11-01 13:43:28 25 4
gpt4 key购买 nike

session_destroy() 函数有什么作用?要删除全局数组 $_SESSION 中的所有 session 变量,我必须使用 session_unset()。要从客户端浏览器中删除 session (删除 session ID 和名称),我必须取消设置 cookie:

unset($_COOKIES[session_id()]);
unset($_COOKIES[session_name()]);

为什么需要 session_destroy() 函数?

最佳答案

session_destroy()结束整个 session ,这意味着它将从 PHP 的 session 存储中删除并且不能再次使用。如果您只取消设置 session 变量和 cookie, session 仍将在服务器端处于事件状态,并且如果再次设置某些 session 变量并且具有原始 session ID 的 cookie 再次发送到客户端,则可能会被回收。

换句话说: session 基本上由存储在 Web 服务器某处的 secret ID 以及注册到该 session 的 session 变量组成。 session ID 被发送到客户端(通常作为 cookie),因此客户端可以在以后的请求中被识别为 session 的“所有者”。假设已经创建了一个 session 并向其注册了变量,下面是函数作用的概述:

  • session_start() 将属于客户端从 session 注册表发送到 $_SESSION 数组的 session ID 的所有 session 变量导入
  • session_unset() 或在 $_SESSION 变量上调用 unset() 将清除注册到当前 session 的所有变量,但它 不会清除 session 本身
  • 取消设置客户端的 session cookie 将向客户端发出 session 结束的信号,但这不会从服务器上的 session 注册表中删除 session
  • session_destroy() 是唯一真正从 session 注册表中清除 session 的函数,因此实际上是“销毁” session

虽然 session_destroy() 将取消注册所有 session 变量,但它不会清除当前正在执行的脚本中的 $_SESSION 数组,因此仍然是一个好主意取消设置 session 变量以防止错误和安全问题。

相关说明,PHP 手册建议不要使用 session_unset()而是从 $_SESSION 中取消设置键:

If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is used, use unset() to unregister a session variable, i.e. unset($_SESSION['varname']);.

关于php - 为什么需要 session_destroy()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9538750/

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