我班上有这个方法:
public function login ( $username, $password )
{
$pdo = parent::getConnection();
$sql = 'SELECT username, pass FROM users
WHERE username = :username';
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->execute();
if ( $stmt->rowCount() === 1 ) {
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if (password_verify($password, $result['password'])) {
return true;
} else {
Error::setError('', 'Wrong username or password');
return false;
}
}else {
Error::setError('', 'Wrong username or password');
return false;
}
}
我已经尝试过像这样使用Isset,但是仍然存在未定义的索引:
if (isset($password)){
if (password_verify($password, $result['password'])) {
return true;
} else {
Error::setError('', 'Wrong username or password');
return false;
}
}
当我使用print_r查看我的变量时,它有一个值。 $ username来自$ _POST ['usename'],$ password来自$ _POST ['password']
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$inputText = [
'username',
'password',
];
$v->required($inputText);
$username = $_POST['username'];
$password = $_POST['password'];
if (count(Error::getError())=== 0 && ($user->login($username,$password))){
http_redirect(admin/index.php);
}
}
答案 0 :(得分:0)
您正在从数据库中选择pass
,但您在password
数组中引用了$result
。
罪魁祸首:
if (password_verify($password, $result['password'])) {
解决方案:
if (password_verify($password, $result['pass'])) {