在登录过程中使用 OOP 的方法


The way to use OOP on a login procedure

在当前登录方法中:

 $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;

并在登录.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()方法中设置会话变量,但是如果我这样做,我应该如何处理检查,例如用户是否被激活?

我可能会创建一个这样的结构:

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。

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

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