是什么让这个通知:未定义的索引:

时间:2015-03-19 02:19:14

标签: php isset

我班上有这个方法:

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);
    }

}

1 个答案:

答案 0 :(得分:0)

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

罪魁祸首:

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

解决方案:

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