0

当用户通过激活码链接访问站点时,他的帐户已激活(数据库中的值已更改),我想显示一些信息消息。为此,我重新加载页面$_SESSION['message'] = "activated"(同时从 URL 中删除激活码)。信息消息块代码:

<? if ($_SESSION['message'] === "activated") { 
ShowAlert('ActivatedOk-popup');

echo '
<div id="ActivatedOk-popup" class="info-popup">
<div class="popup-info-wrapper"><div class="leaflet-popup-close-button">×</div>
    <div class="popup-header">'.ACTIVATION_POP_HEADER.'</div>
    <div class="popupRecord1">
               <p>'.ACTIVATION_POP_TEXT1.$_SESSION['name'].ACTIVATION_POP_TEXT2.'</p>
    </div>
    <button class="popup-btn close_but">'.ACTIVATION_POP_BTN.'</button>
</div>
</div>';

unset($_SESSION['message']);
}
?>

但我不明白为什么这个弹出窗口没有出现。如果我删除最后一行:$_SESSION['message'] = "";一切正常,但 Message 变量不为空,并且每个页面都会弹出。如何正确显示弹出窗口然后取消设置变量?

4

2 回答 2

0

您的代码在理论上是正确的。就像匿名状态的评论一样,您应该使用session_start();它来确保会话处于活动状态。(请参阅 PHP ini 设置会话“自动启动” - 不同服务器上的设置可能会有所不同)。

关于您的代码:我建议不要使用短开放标签(因为在不同的配置中可能不允许使用这些标签)。我建议在检查其内容之前检查会话变量是否存在,以避免不必要的通知,例如:

<? if (isset($_SESSION['message']) && $_SESSION['message'] === "activated") { 
     // foo
 }
?>

话说回来。您的问题最可能出在函数中ShowAlert()。你介意分享一些细节吗?

于 2013-06-01T18:55:40.100 回答
0

在尝试使用任何会话变量之前,您必须启动/初始化会话 *session_start();*。通过在初始化后回显一次 $_SESSION['message'] 来检查


<? session_start(); //echo $_SESSION['message'];
?>

于 2013-06-01T18:46:41.203 回答