2017-05-15 3 views
0

必要なもの:ユーザーがログアウトすると(セッションが破棄された)、インデックスは次のように表示されます。ログアウトしたユーザーの表示

if (isset($_SESSION['user']) && $_SESSION['user'] == true) { 
echo "Welcome on the users page!, " . $_SESSION['username'] . "!"; 
    } 
    elseif (!isset($_SESSION['user'])) { 
    echo "You logged out..";} 

私が抱えている問題は、ログアウトできないときにもログアウトしたことを示していることです。ユーザーがログアウトした場合にのみ表示することができます。

また、「あなたはログアウトしました」と表示されるのは1回だけです。ページを更新した場合、それが原因で、以下の条件である

+0

クイックフィックスを希望する場合は、$ _SESSION ['user']をデフォルトでfalseに設定してから、ユーザーがログアウトしたときにその設定を解除する必要があります。しかし、それは本当にクリーンではない...または多分あなたのエラーメッセージを一度だけポップするための他のセッション変数を定義する。 –

答えて

0

php unset()を使用する代わりに、あなたが実際に$ _SESSION ["user"]にboolean "false"を保存することができます。偽

例に

の代わりに破壊し、設定されたセッション:あなたはページをログアウトして例えば

`` //ログアウトした場合 $ _SESSION [ "ユーザー"] = false;

//now to check if user logged out 

if($_SESSION["user"] === false) { 

echo "you logged out"; 

}elseif(!isset($_SESSION["user"])) {//when the session finally expires 
echo " you haven't logged in"; 

}else{ 
echo "you are logged in"; 
} 


//to get rid of it after page reload, you need to unset the SESSION 


unset($_SESSION["user"]); 
+0

今、それをリフレッシュするときにそれを取り除く方法を見つける必要があります。ありがとう。 –

+0

あなたは$ _SESSION ['user']を実際に破壊することでそれを取り除くことができます。更新された回答を確認する –

0

を行ってする必要があります。

!isset($_SESSION['user'] 

これは、ユーザーがログインしているか否かが真です。したがって、ログアウトしたユーザーを確認するために、他のセッション変数を作成する必要があります。これは、ユーザーがログアウトしたときにのみ設定されます。

例:

if(!isset($_SESSION['user'] && isset($_SESSION['logged_out'])) 
{ 
    // isset($_SESSION['user'] to check if user logged out and extra condition to check if user comes here after logged-out. 
} 

とインデックスページでこれを確認してください。

+0

私のコードが間違っている理由を知っていますが、ユーザーがログアウトしたかどうかをチェックする方法はありますか? –

+0

更新された答えを確認してください –

関連する問題