2011-02-02 94 views
1

我在PHP中有一個網站,我希望當用戶登錄到他的個人資料時,他會在儀表板上看到類似Welcome的消息「」。現在這裏的轉折點是,我希望只有當用戶剛剛登錄時纔會顯示此消息,而不是每次使用繼續會話。如何僅在登錄PHP網頁時顯示消息?

在這種情況下可以做些什麼?請幫助...

感謝

回答

4

將變量存儲在會話中。讓你的儀表盤頁面上的狀態,看起來像:

<?php 
if(isset($_SESSION['welcome_message'])) 
{ 
    echo $_SESSION['welcome_message']; 
    unset($_SESSION['welcome_message']); 
} 
?> 

現在,它不會在後續頁面點擊顯示。

這通常被稱爲「閃光燈」消息。

3

您可以在$_SESSION陣列中使用的標誌。

<?php 
    if (!isset($_SESSION['display_greeting'])){ 
     echo "Hello " . $name; 
     $_SESSION['display_greeting']=1; 
    } 
    ?> 
3

我會假定你只想讓這個消息一次顯示出來,例如,他們的第一次登錄時,您需要:

  1. 如果message_displayed數據庫是假的,如果是則顯示消息
  2. 在數據庫中設置message_displayed對用戶真正

現在後續的日誌將會在數據庫中設置。只在會話中執行此操作將意味着,如果他們刪除了Cookie或從另一臺計算機登錄,它可能會再次顯示。

編輯:

退一步來說,這是不可持續的。真的,你需要一個通知系統。

  1. 通知在其自己的表格生成與用戶ID
  2. 當在通知表中的用戶登錄檢查
  3. 如果存在,那麼它被顯示,並標記爲已讀或刪除的通知

這樣,您可以只顯示一次多個通知,而不是依賴用戶表中的單個數據庫列。您還可以爲通知設置不同的觸發器,例如它會顯示一次並刪除它,或者只有在發生特定操作時纔會被刪除。例如接受/拒絕朋友請求。

+0

一個不錯的技術 – 2011-02-02 11:26:45

2

這是框架的一個共同特徵。這個想法是你在一個會話中存儲一條消息,然後在它被顯示之後,你刪除它。一個基本的例子是我:

session_start() 
$_SESSION['message'] = "thanks for logging in"; 
header('Location: index.php'); 

然後在你的索引。

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

這些被稱爲flash消息,並且實現已經存在。檢出:https://github.com/jimmiw/php-flash-message

0

嗨創建一個log_report(或什麼名字)表中輸入用戶登錄的時間,但在輸入之前把時間放入會話和比較時間與您現有的記錄,如果該記錄不存在否則不顯示消息。每次頁面加載時都會比較該會話時間。如果現有不顯示,否則顯示....

相關問題