未设置会话变量会停止执行

Posted

技术标签:

【中文标题】未设置会话变量会停止执行【英文标题】:unset session variable halts execution 【发布时间】:2011-12-16 20:06:41 【问题描述】:

我一直在为这段代码发疯,并将其缩小到未设置的功能。当我在会话变量上调用 unset 时,php 不会执行任何超出该点的操作。有人可以帮忙吗?

public static function print_session_notification() 

    if( isset( $_SESSION['notification'] )) 
        $session_notification = $_SESSION['notification'];

        $output = '<div class="error">';
        $output .= $_SESSION['notification'];
        $output .= '</div>';

        unset( $_SESSION['notification'] );

        return $output;
    

我调用打印通知::print_session_notification();从标题包含。标头包含由函数调用。 $notification 对象在调用头文件的函数中是全局的。

【问题讨论】:

您发布的代码没有问题,也不会重现您的错误。尝试用尽可能少的代码重现您的错误。对于您发布的内容,我们无法为您提供帮助。 您的 register_globals 是否处于“开启”状态? php.net/manual/en/function.unset.php#40539 可能相关:***.com/questions/1025300/… 我们至少需要查看调用print_session_notification()的代码或函数。 为什么将会话值本地化为 $session_notification,但不使用它?好像你可以摆脱那条线。 对不起,伙计们,我忘了提到我调用了 print notification::print_session_notification();从标题包含。头文件包含由函数调用。 【参考方案1】:

我通过向构造添加方法并将会话值分配给公共属性来解决此问题。谢谢你们的帮助!!!

【讨论】:

【参考方案2】:

请确保您在标题上设置了 session_start() 函数并将 register_globals 设置为“ON”

更多信息请阅读http://www.php.net/manual/en/function.unset.php上的cmets

【讨论】:

Register Globals 自 PHP 5.3.0 起已弃用

以上是关于未设置会话变量会停止执行的主要内容,如果未能解决你的问题,请参考以下文章

如何在取消设置变量后修复会话未启动

使用 AJAX 设置时未保存 Django 会话变量

PHP未设置会话不起作用

PhP 5.4 中的 PhP 上传进度不起作用。未设置会话变量

会话变量未结转

会话变量未在函数中设置