首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >奇怪的$_SESSION行为

奇怪的$_SESSION行为
EN

Stack Overflow用户
提问于 2013-01-03 22:22:10
回答 4查看 70关注 0票数 0

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

代码语言:javascript
运行
复制
<div id="messages">
    <?php if (isset($_SESSION["message"])):?>
    <span class="message"> <?php echo "message is ".$_SESSION["message"]?>
    </span>
    <?php endif ?>
</div>

这很好,消息是显示的。现在,我希望从会话中删除"message“变量,以便只在一个请求中调用它,因此我添加了行unset($_SESSION"message");在结束之前,代码如下:

代码语言:javascript
运行
复制
<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。有什么帮助吗?

EN

回答 4

Stack Overflow用户

发布于 2013-01-03 22:30:17

似乎没有地方可以设置$_SESSION['message']变量。如果变量没有设置为任何内容,那么从一开始就不会显示任何内容。

票数 1
EN

Stack Overflow用户

发布于 2013-01-03 22:26:54

您从未设置过$_SESSION["message"]变量。所以一旦你有了unset(),它就消失了。您必须再次设置它以使其可用。

票数 0
EN

Stack Overflow用户

发布于 2013-01-03 23:09:06

除非打开$_SESSION,否则不能取消设置register_globals变量。你可以:

代码语言:javascript
运行
复制
unset($GLOBALS[_SESSION]['message']);

或者给它另一个价值:

代码语言:javascript
运行
复制
$_SESSION['message'] = false;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14148206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档