Php 为什么session_destroy无法取消设置当前会话值
我知道使用Php 为什么session_destroy无法取消设置当前会话值,php,session,Php,Session,我知道使用unset()或$\u SESSION=array()可以取消设置$\u SESSION值 但是我仍然想知道为什么session\u destroy()不能取消设置$\u session值,那么session\u destroy()到底做了什么 何时使用会话\u destroy() 使用unset()后是否需要调用session\u destroy() session\u destroy()销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cook
unset()
或$\u SESSION=array()
可以取消设置$\u SESSION值
但是我仍然想知道为什么session\u destroy()
不能取消设置$\u session值,那么session\u destroy()
到底做了什么
何时使用会话\u destroy()
使用
unset()
后是否需要调用session\u destroy()
session\u destroy()
销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie
因此,session\u destroy()
将销毁实际存储的数据(filesystem/memcached/Redis/which,具体取决于已配置的会话处理程序),但相同的数据仍将保留在$\u session
超全局中的内存中,直到您使用unset()显式地将其取消设置
或$\u会话=[]
因此,是的,您必须在使用unset()
后调用session\u destroy()
,如session\u destroy()
手册页面上的示例所示:
最后,回答您的主要问题“为什么session_destroy不能取消当前session值php”:因为这不是这个函数的用途。手册说明了一切。只要仔细阅读,您就会了解会话清理的所有内容。会话的输出是什么?抱歉,问题只是关于会话的销毁,而不是会话的取消。我将更改标题
session_start();
$_SESSION['name'] = 'Sam';
echo $_SESSION['name'];//Sam
session_destroy();
echo $_SESSION['name'];//Sam