当我们在做LOGOUT.php时,为什么我们需要,unset和session destroy?

时间:2013-08-30 16:36:22

标签: php session logout unset

?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()?我通过删除其中一个进行测试,结果仍然相同。用户仍然注销。请有人向我解释,非常感谢。

2 个答案:

答案 0 :(得分:0)

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

session_destory()会破坏会话。

  

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

但是,我建议您这样做:

$_SESSION = array();

...而不是unset();

答案 1 :(得分:0)

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

$_SESSION = array(); 

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