在我的网站上,login.php页面(如果成功登录)将重定向到index.php,并将启动一个会话和2个SESSION变量。
其中一个变量是成功消息:
$_SESSION["message"] = "Login successful!";
第二个是用户会话变量:
$_SESSION["authenticatedUserEmail"] = $email;
问题是如果我单独检查变量然后尝试在index.php页面上使用它们,那么只有第一个被检查的变量才有效。
以下代码段会显示$form_message
,但不会显示$_SESSION["authenticatedUserEmail"]
:
session_start();
if(isset($_SESSION["message"])) {
$form_message = $_SESSION["message"];
session_unset($_SESSION["message"]);
echo $form_message;
} else {
$form_message = "";
}
if (isset($_SESSION["authenticatedUserEmail"])) {
echo $_SESSION["authenticatedUserEmail"];
}
当我只使用一个if(isset($_SESSION
语句时,它确实有效,但我不想总是在同一个语句中包含这两个语句。
我做了错误检查:
ini_set('display_errors',1);
error_reporting(E_ALL);
但没有出现错误。
任何人都可以建议为什么这可能不起作用或者我错过了什么?
提前致谢。
答案 0 :(得分:4)
session_unset函数释放所有会话变量。这就是为什么当你使用session_unset时,没有建立下一个会话变量。请阅读手册。
http://php.net/manual/en/function.session-unset.php
实现你想要的你可以使用未设置的功能
unset($_SESSION["message"]);
希望这会有所帮助
答案 1 :(得分:2)
您致电session_unset
是个问题,您应该只使用unset
。
session_unset
取消整个$_SESSION
数组。