在当前登录方法中:
$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。