0

我的 header.php 中有以下代码,它从 $_SESSION 获取消息并将其显示给用户,我在控制器中设置了“消息”会话变量。

<div id="messages">
    <?php if (isset($_SESSION["message"])):?>
    <span class="message"> <?php echo "message is ".$_SESSION["message"]?>
    </span>
    <?php endif ?>
</div>

这工作正常并显示消息。现在我想从会话中删除“消息”变量,以便仅在一个请求中调用它,所以我添加了行 unset($_SESSION["message"]); 在结束之前,所以代码变为:

<div id="messages">
    <?php if (isset($_SESSION["message"])):?>
    <span class="message"> <?php echo "message is ".$_SESSION["message"]?>
    </span>
    <?php 
    unset($_SESSION["message"]);
    else :
    //for debugging
    echo "There is no message";
    endif
    ?>
</div>

现在总是没有打印消息,而是总是打印“没有消息”!消息变量设置正确,正如我在删除此unset($_SESSION["message"]);行时所说,显示消息。

顺便说一句,我没有使用框架,只是普通的 php。有什么帮助吗?

4

4 回答 4

1

看起来没有设置$_SESSION['message']变量的地方。如果变量未设置为任何值,则将永远不会显示任何内容。

于 2013-01-03T22:30:17.273 回答
0

除非您启用了 register_globals,否则您无法取消设置 $_SESSION 变量。你可以做:

unset($GLOBALS[_SESSION]['message']);

或者只是给它另一个值:

$_SESSION['message'] = false;
于 2013-01-03T23:09:06.037 回答
0

你从来没有设置你的$_SESSION["message"]变量。所以一旦你拥有unset()它,它就消失了。您必须重新设置它才能使用它。

于 2013-01-03T22:26:54.747 回答
0

好的,我明白了,以某种方式在 header(Location) 之后添加 exit() 解决了它,尽管我不知道这与问题有什么关系。谢谢大家。

于 2013-01-03T23:39:15.850 回答