2011-02-02 5 views
1

私はPHPでウェブサイトを持っています。ユーザーが彼のプロフィールにログインすると、ようこそ "のようなダッシュボードにメッセージが表示されます。ここでは、このメッセージが表示されるのは、ユーザーが継続セッションで毎回ログインしていない場合にのみ表示されるようにすることです。PHPのWebページにログインするときにのみメッセージを表示する方法は?

この場合、何ができますか?あなたは$_SESSION配列にフラグを使用することができます

おかげ

答えて

4

変数をセッションに格納します。ダッシュボードページに次のような状態があります。

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

それで、それ以降のページヒットでは表示されません。

これは、しばしば「フラッシュ」メッセージと呼ばれます。

3

...助けてください。

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

このメッセージを一度しか表示しないことをお勧めします。ログイン彼らの最初に、以下を行う必要があります。

  1. それが、その後真

に、ユーザーに対してデータベースにメッセージ

  • 設定message_displayedが表示されている場合、データベース内のmessage_displayedは、偽の場合今度はそれ以降のログインがデータベースに設定されます。セッションでのみ行うと、クッキーを削除したり、別のマシンからログインすると、再び表示されることがあります。

    編集:これは持続可能ではない考え直しに

    。本当にあなたは通知システムが必要です。

    1. 通知は、通知の読み取りまたは削除済みとして、それが表示され、マークされて存在している場合は、通知表でユーザーがログインが
    2. チェックされているユーザーID
    3. で、独自のテーブルに生成されます

    このようにして、ユーザーテーブルの単一のデータベース列に頼るのではなく、1回だけ多くの通知を表示できます。また、通知に異なるトリガーを設定することもできます(例:それは一度表示され、その削除されるか、特定のアクション、たとえばフレンドリクエストの受け入れ/拒否が行われたときにのみ削除されます。

  • +0

    素晴らしいテクニック –

    +0

    ありがとうAwais Qarni - 私は少し編集しました... –

    2

    これはフレームワークの共通の機能です。アイデアはセッションにメッセージを格納し、表示された後にメッセージを削除することです。基本的な例は次のとおりです。

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

    あなたのインデックスにあります。

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

    これらはフラッシュメッセージと呼ばれ、実装は既に存在します。チェックアウト:https://github.com/jimmiw/php-flash-message

    0

    こんにちは、ユーザーがログインしてからその時間をセッションに入れて、既存のレコードと時間を比較する時間を入力するlog_report(またはこれまでの名前)テーブルを作成しますそれ以外の場合はメッセージを表示しない。ページが読み込まれるたびに、そのセッション時間を常に比較します。もし存在していなければ、それ以外の場合は表示されません....

    関連する問題