1
?php session_start();
if(isset($_SESSION["user_name"]))
if($_GET["destroy"]=="yes")
{
session_destroy();
unset($_SESSION["user_name"]);

}

if(!isset($_SESSION["user_name"]) &&
$_GET["user"]!="")
$_SESSION["user_name"] = $_GET["user"];

?> 

我想知道,为什么我们需要 unset 和 session_destroy()?我通过删除其中一个进行测试,结果仍然相同。用户仍然注销。请有人给我解释一下,非常感谢。

4

2 回答 2

0

unset()删除变量而不是会话。

session_destory()销毁会话。

session_destroy() 销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话 cookie。

但是,我建议您执行以下操作:

$_SESSION = array();

... 代替unset();

于 2013-08-30T16:46:19.370 回答
0

session_unset() 只从会话中删除一个变量 - 会话仍然存在 - 只有数据被截断。但是 session_unset() 是一个过时的 PHP 函数。我们可以将会话设置为空数组。

$_SESSION = array(); 

session_destroy() 将删除整个会话。并非总是需要两者都做。但为了确保额外的安全性,建议两者都做。

于 2013-08-30T16:47:48.157 回答