我是新来学习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']回声测试用户。在我看来,它不应该,因为我已经破坏了会议。是什么原因?
答案 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
中删除所有会话变量,然后销毁会话。