**session_unset()**:释放当前在内存中已经创建的所有$_SESSION变量,但是不删除session文件以及不释放对应的session id;
**session_destroy()**:删除当前用户对应的session文件以及释放session id,内存中$_SESSION变量内容依然保留;
下面是一个对比:
<?php
//session_start();必须位于<html>标签之前
session_start();
$_SESSION['view']=3;
?>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<?php
// put your code here
echo 'session的id为:'.session_id().'<br>';
if(session_destroy()){
echo "清除成功!"."<br>";
echo 'session的id为:'.session_id().'<br>';
echo 'Views1 = '.$_SESSION['view'].'<br>';
unset($_SESSION);
echo 'Views2 = '.$_SESSION['view'];
}
else{
unset($_SESSION);
echo 'Views2 = '.$_SESSION['view'];
}
?>
</body>
</html>
输出结果为:
session的id为:rj8807cckpsnafo4mt6kp4obp5
清除成功!
session的id为:
Views1 = 3
Views2 =
通过输出结果可以看到调用session_destroy()函数,session的id被清空,但是$_SESSION里面的变量值还是存在的,然而调用session_unset()函数之后就取不到之前存放的变量值了;