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() 检查数据库和验证成功(如果用户处于活动状态,用户:密码匹配和其他测试)运行 updateUserSession()。最后返回 $this->loggedIn() 的结果。

logout() 使用 deleteUserSession() 取消设置会话。

loggedIn() 使用 getUserSession() 检查会话,如果用户已登录,则返回 true 或 false。

于 2012-05-11T12:23:39.117 回答
0

您可以在任一过程中执行此操作。会话变量是相同的。

要检查活动用户,只需在查询中添加“and userActive = 1”。要停用用户,只需将此列更改为该用户的 0。

于 2012-05-11T12:20:51.027 回答