在销毁之后,PHP中的会话存在

时间:2011-09-10 07:24:11

标签: php session

我是新来学习Php。我创建了以下代码。

<?php
/* 
 * Testing Sessions with PHP
 */
session_start();
$_SESSION['user_id'] = 'Testing User';
session_destroy();
?>

<html>
<head>
    <title> Sessions Page</title>
</head>
<body>
    <?php
       echo $_SESSION['user_id'];
    ?>
</body>
</html>

现在echo $ _SESSION ['user_id']回声测试用户。在我看来,它不应该,因为我已经破坏了会议。是什么原因?

3 个答案:

答案 0 :(得分:2)

您需要取消设置会话变量。 见http://php.net/manual/de/function.session-unset.php

意味着,在销毁会话之前先放置session_unset()。

答案 1 :(得分:2)

函数session_destroy()确实会破坏你的会话。在这种情况下,会话是服务器上的文件(或数据库),用于保存数据。这意味着您之后无法在其他页面上访问此会话。

globale $ _SESSION []变量是另一回事。在页面上的代码开始处理之前,它将从会话文件中填充。因此,它会保留数据的副本并保留在内存中,直到您的页面完成处理。您可以使用session_unset()清除此变量,但您也可以等到页面完成并且所有变量都被销毁。

答案 2 :(得分:1)

这似乎是(无论出于何种原因)设计。做你想做的正确方法是。

session_start();
$_SESSION['user_id'] = 'Testing User';
session_unset();
session_destroy();

此代码将从$_SESSION中删除所有会话变量,然后销毁会话。