是什么引起了这个注意:未定义的索引:

what make this Notice: Undefined index:

我的class中有这个方法:

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 查看我的变量时,它有一个值。 $用户名来自$_POST['usename'],$密码来自$_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);
    }

}

您正在从数据库中选择 pass,但您在 $result 数组中引用 password

罪魁祸首:

if (password_verify($password, $result['password'])) {

解决方法:

if (password_verify($password, $result['pass'])) {