0

現在のログイン方法では:

 $sth = $this->db->prepare("SELECT id, username, active FROM user WHERE username = ? AND password = ?");
        $sth->setFetchMode(PDO::FETCH_OBJ);
        $sth->execute(array($username, $password));

        if (($obj = $sth->fetch()) !== FALSE)
            return $obj;

そしてlogin.phpファイル。

$auth = new Auth($db);

$user = $auth->login('username', 'password');

if ($user) {
    if ($user->active == 0) { die('You must activate your account')}

    //If all is okay... Set the session variables...
}

しかし、login() メソッドでセッション変数を設定するほうがよいと言われたのですが、そうすると、ユーザーがアクティブ化されているかどうかなどのチェックをどのように処理すればよいでしょうか?

4

2 に答える 2

2

私はおそらく次のような構造を作成します:

class Auth {
  public function login($user, $pass);
  public function logout();
  public function loggedIn();

  private function getUserSession();
  private function updateUserSession();
  private function deleteUserSession();
}

login()はデータベースをチェックし、認証が成功すると(ユーザーがアクティブな場合、user:password matchおよびその他のテスト)updateUserSession()を実行します。$ this-> loggedIn()の結果を返すことで終了します。

logout()は、deleteUserSession()でセッションの設定を解除します。

LoggedIn()は、getUserSession()を使用してセッションをチェックし、ユーザーがログインしている場合はtrueまたはfalseを返します。

于 2012-05-11T12:23:39.117 に答える