PHP何时评估$ _SESSION vars?

时间:2010-08-29 16:44:12

标签: php

所以我的问题是我在会话var中设置一条消息以在页面重定向中继承。 然后将var设置为空字符串,以便每次都不重新显示。 像这样:

if ($successMsgs || !empty($_SESSION['msg_success'])) {
 $success_block[] = '<ul id="success-block">';
 foreach($successMsgs as $success) {
  $success_block[] = '<li>'.$success.'</li>';
 }
 if (!empty($_SESSION['msg_success'])) {
  $success_block[]='<li>'.$_SESSION['msg_success'].'</li>';
  $_SESSION['msg_success']='';
 }
 $success_block[] = '</ul>';
 $success_block = implode('',$success_block);
}

问题在于会话var的清除似乎具有反复活动效果,因此消息永远不会显示。它只有在我取出将其重新设置为空字符串的行时才有效。我在想有什么关于什么时候评估会话变量我不明白?

3 个答案:

答案 0 :(得分:2)

除了在调用函数和类之后自由定义函数和类之外,PHP中肯定没有任何反向活动。会话变量将在session_start()命令后可用。在块中取消设置会话变量在代码发生之前不会产生影响。

您的问题必须与其他内容有关 - 也许页面会被调用两次,或者是否会发生标题重定向?

答案 1 :(得分:1)

事实证明,在实际重定向之前,重定向下的代码正在运行。解决方案只是向重定向函数添加退出。

答案 2 :(得分:0)

好吧,我能想到的唯一可能性就是你要两次调用这段代码。并且在第一次调用中它不会被打印。也许你出于某种原因重定向两次......