2015-08-14 89 views
1

我試圖在PHP中創建一個基於會話的閃光消息:PHP會話基於Flash的消息

在register.php頁面,我設置會話如下:

$_SESSION['flash'] = 'Registered'; 

然後,在將用戶重定向到主頁後,我打印了閃存消息:

if (isset($_SESSION['flash'])) { 
    echo $_SESSION['flash']; 
    unset($_SESSION['flash']); 
} 

會話在兩個頁面中都啓動。 問題是: 只有當我刪除未設置的功能,然後纔會打印消息,我纔會在主頁中看到閃光消息。

+0

也許正在執行兩次的youre首頁,讓您在第一次執行運行刪除的信息,然後有什麼可打印的第二時間。 –

+0

你可以把更多的代碼plz ..需要看你如何重定向。 –

+0

我確定主頁是一次執行的。否則,在重定向之後,我正好在設置會話之後使用標題('Location:Home.php')。但是,有關更多信息,我打印郵件的代碼位於文件Message.php中,然後將此文件包含在另一個文件中,該文件包含最後一個包含在每個頁面中的HTML標頭。經過幾個小時的測試後,我發現當我將Message.php文件從頭文件直接移動到主頁時,問題就解決了,但這並不是一個好的做法,因爲我想要所有頁面中的Message.php文件,所以有任何想法嗎 ? –

回答

1

我解決我的問題通過重定向用戶逃避註冊頁面執行後增加出口,所以會不會取消設置在下一頁中使用它之前在當前頁面中。

0

請注意,session_unset只是清除sesison的使用。會話仍在用戶計算機上。請注意,通過使用session_unset,該變量仍然存在。

然而,與session_destroy一起使用session_unset是實際清除數據的更有效方法。正如上面的例子說明,這個作品非常好,跨瀏覽器:

<?php 
session_unset(); 
session_destroy(); 
?> 
+0

感謝您的回答,但我不認爲您瞭解問題,確切發生的情況是:即使在使用之前會話也未設置,因此我無法在頁面中看到消息。但是,當我刪除未設置時,一旦刷新頁面,我總是會收到消息,並希望消失。 –

1

我爲這類問題寫了一個庫:https://github.com/tamtamchik/simple-flash

一旦你安裝,你可以這樣做:

// put message not session 
flash('Some error message', 'error'); 

// print it after redirect 
echo flash()->display(); 

它會產生Bootstrap友好警報消息。

Example