在单个页面上使用多个SESSION变量不起作用

时间:2016-12-14 10:06:34

标签: php session-variables

在我的网站上,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); 

但没有出现错误。

任何人都可以建议为什么这可能不起作用或者我错过了什么?

提前致谢。

2 个答案:

答案 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数组。