2013-06-01 175 views
0

當用戶通過激活碼鏈接訪問網站時,他的帳戶激活(更改了數據庫中的值),我想顯示一些信息消息。爲此,我重新加載頁面$_SESSION['message'] = "activated"(同時從URL中刪除激活碼)。信息消息塊代碼:PHP會話及其變量

<? 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變量不爲空,每個頁面都會彈出。如何正確顯示彈出窗口然後取消設置變量?

+2

你用過'session_start()'嗎? –

+0

菲爾的評論+1,你可能不需要相同的比較('===')就等於('==') –

+0

避免使用==代替===。 –

回答

0

你必須開始/初始化一個會話* session_start(); *在嘗試使用任何會話變量之前。 檢查呼應你的$ _SESSION [ '消息']初始化


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

+0

會議正在進行中。如果我刪除最後一行(未設置),我可以在會話文件中看到服務器變量「消息」。但最後一行,這個變量被刪除。 – user2443795

+0

回顯你的(檢查)'$ _SESSION ['message']'的值而不取消設置,它是否給出_「激活」_。 –

0

你的代碼後,一度在理論上是正確的。像匿名狀態的評論一樣,您應該使用session_start();來確保會話處於活動狀態。 (請參閱PHP ini設置會話「自動啓動」 - 設置可能因不同服務器而異)。

關於你的代碼:我建議不要使用短打開的標籤(因爲這些標籤在不同的配置中可能不允許)..我建議在檢查其內容之前檢查會話varialble是否存在,以避免不必要的通知,例如:

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

話雖如此。您最可能遇到的問題是功能ShowAlert()。你介意分享一些細節嗎?

+0

問題肯定不在函數中,因爲在頁面代碼中不會出現應該由echo打印的html。如果刪除功能,它也不起作用。 – user2443795

+0

然後你在別處有一個邏輯錯誤 - 這裏沒有顯示。 –