0
$loggedin = false; 
if ($_SESSION) { //user loggedin
    $loggedin = true;
    ...//get token
}
...
if($loggedin){
echo 'Hi '.$user['name'];
}
else{
echo 'Please log in';
}
...

ログアウトすると、Web ページに「ログインしてください」と表示されると思います。しかし、「/src/myproject/index 行 80 で未定義の $user 変数」と表示されます。ページを更新すると、「ログインしてください」と表示されます。

ここで何が問題なのですか?ご協力ありがとうございました。

4

1 に答える 1

2

疑似コードからわかることから、ユーザーがログインしていることを示す $_SESSION 変数に何らかのキーがあります。

デモンストレーションのために、次のようなことをすると仮定しましょう... ユーザーがログインした後、$_SESSION['user'] = ユーザー情報の配列を割り当てます。それらのキーの 1 つが「名前」です。

したがって、コードは次のようになります

$loggedin = false;
if (isset($_SESSION['user'])) {
    $loggedin = true;
}

if ($loggedin) {
    echo "Hi " . $_SESSION['user']['name'];
}
else {
    echo "You are not logged in."
}

これは、投稿したコード サンプルの単なる解決策であることに注意してください。これを適切に行うには、次の変更をお勧めします。

  • 認証を処理するクラスを作成する
  • そのクラスにメソッドを作成して、ユーザーがログインしているかどうかを判断します
  • 現在ログインしているユーザーを返すメソッドを作成します。

これにより、コードがより拡張可能になり、再利用可能になり、将来的に追跡しやすくなります。

幸運を祈ります。

于 2013-03-19T14:22:00.037 に答える