我一直在阅读手册和网页上的各种页面,包括很多关于SO的问题.但是,我仍然无法session_destroy()理解PHP中的概念以及其他未设置会话数据的方法.
对于从未在$_SESSION超全局数组外部注册会话变量的站点,请考虑这一点.
session_start();
$_SESSION = array();
session_regenerate_id(true); // New cookie + old session file on server deleted
session_destroy(); // What does PHP do here that was not done above?
Run Code Online (Sandbox Code Playgroud)
请注意,我已经构建了多年的工作登录注销脚本.这个问题不是要让事情发挥作用,而是我想要准确理解发生了什么.
(SO上的很多答案也使用session_unset()了取消注册变量.但是,我从不使用session_register(),所以这看起来真的很多.)
session_id($randomString)和之间的明显区别是session_regenerate_id()什么?两者似乎都更改了会话ID:
session_regenerate_id()将用一个新的ID替换当前的会话ID,并保留当前的会话信息。
session_id()用于获取或设置当前会话的会话ID。
如果我做对了,session_regenerate_id()创建一个新的会话文件并复制数据,并带有删除旧文件的选项。同时session_id($randomString)只需更改现有文件中的会话ID。
如果是这样,复制文件有什么好处?从防止会话固定的角度来看,如何更好?
这个答案,或者我找到的任何其他答案,都无法回答我的问题。