0

最初にログインせずに自分の spacebook ページのユーザーが他のページに移動できないようにしようとしています。セッション変数を使用することになっていることを理解しています。入力することにより、特定のセッションでユーザーを記憶していることがわかりsession_start()ます。ページの上部にあります。クライアントがログインしているかどうかをブラウザーに記憶させるには、新しいクラス ファイルが必要でしょうか? セッションをクラス オブジェクトに保存する必要がありますか? アクセスが承認されたページにアクセスする前にユーザーがそこに移動した場合、必要な if/else ステートメントを別の php ファイルのどこに保存しますか?

新しいクラスが必要な場合は、次のようになると思います。

class Loggedin {
    private $isLoggedIn;

    public function Loggedin($username) {
        if (array_key_exists($username, $this->isLoggedIn) && ($this->isLoggedIn[$username] == $password))
        {
            return true;
        }
        else 
        {
            return false;
        }
    }
}
4

4 に答える 4

1

ユーザーがログインしたら、次のようにユーザー ID を $_SESSION 変数に格納するだけです。

login.php:

if (login_correct($userid, $password)) { 
   // Login successful
   $_SESSION['user_id'] = $userid; 
}

別の PHP ファイルは次のようになります。

if (null !== $_SESSION['user_id']) { 
    // User ist logged in... 
} else { 
    // User is not logged in! 
}

logout.php は次のようになります。

$_SESSION['user_id] = null;
于 2012-10-06T15:25:39.283 に答える
0

私はあなたがこれを考えすぎていると思います

  • パスワードは、必要以上に長く保存されることはありません (つまり、最初の認証要求なので、パスワードは$password不要であり、定義されているわけではありません)。
  • どこにでもアクセスできます$_SESSION。クラスにラップするかどうかはあなた次第です。
  • isset($_SESSION['username'])認証チェックは(ログイン時にそのセッション値を設定すると仮定すると) と同じくらい簡単です。
于 2012-10-06T15:24:38.197 に答える
0

PHPの変数は、スーパーグローバル$_SESSIONと呼ばれるものです。これは、この変数がアプリケーション全体の任意のスコープからアクセスできることを意味します。を使用するだけです。$_SESSION

$_GET$_POST、 、$_REQUEST$_SERVER同様です$_ENV。私はどこかに欠けていると確信しています:D

于 2012-10-06T15:25:01.303 に答える
0

ユーザーの記憶は (ログイン成功後) 次のように簡単です。

$_SESSION['userid'] = 1234;

別のページでは、次のようにクエリを実行します。

if (isset($_SESSION['userid'])) {
    // user is logged in
}

これを行うためにセッションにオブジェクトを保存する必要はありません。

于 2012-10-06T15:25:28.247 に答える