首页 > 解决方案 > 我想知道一个 php 7.4 在登录脚本上给我带来了麻烦

问题描述

当没有用户存在时会出现问题,因为 PHP 7.4false在此处 返回$fetched = $check->fetch();

那么如何处理这种情况

    $name = $_POST['name'];
    $pass = $_POST['pass'];
    $check = $db->prepare("SELECT id, name, pass FROM users WHERE name = ?");
    $check->execute([$name]);
    $fetched = $check->fetch();
    if (password_verify($pass, $fetched['pass']) && ($name === $fetched['name']){
        header('Location: home');
    } else {
        echo 'This account not exists';
    }

但我不知道为什么没有这个工作password_verify(),看

if ($check->rowCount() > 0 ) {

} else {

}

标签: phpphp-7.4

解决方案


添加检查$fetched

if ($fetched && password_verify($pass, $fetched['pass'])) {
    header('Location: home');
} else {
    echo "Invalid username or password";
}

没有必要测试$fetch['name']。它保证等于$name因为WHERE name = ?


推荐阅读