首页 > 解决方案 > password_verify 始终返回 true

问题描述

我正在登录页面上工作,偶然发现了这个问题,无论我写什么密码,我都可以登录。

我检查了 $password、$row['password']、$pwdCheck 的值,它们都具有它们需要的值。

散列密码保存在 varchar(255) 中。我仔细检查了名字和我想到的一切,但如果你想到了什么,请告诉我。据我所知,问题在于密码验证。

我知道这不是制作登录页面的最佳做法,但现在它可以工作。

谢谢

<?php

if ( isset($_POST['login-submit']) ) {
    require '../../files/includes/functions.php';
    $mysqli = get_db();
    $email = $_POST['email'];
    $password = $_POST['password'];
    // check if the email is in the database
    $sql ='SELECT * FROM taxisvl_diritems WHERE email =?';
    $stmt = mysqli_stmt_init($mysqli);
    if ( empty($email) || empty($password) ) {
        header("Location: /inloggen?error=emptyfields");
        exit();
    }
    else {
        // check to see if we can run the query
        if ( !mysqli_stmt_prepare($stmt,$sql) ) {
            header("Location: /inloggen?error=sqlerror");
            exit();
        }
        else {
            // bind the value to the parameter in the query statement
            mysqli_stmt_bind_param($stmt, 's', $email);
            // run the query
            mysqli_stmt_execute($stmt);
            $result = mysqli_stmt_get_result($stmt);
            // check if we have a result for the given email
            if ( $row = mysqli_fetch_assoc($result) ) {
                // check the password
                $pwdCheck = password_verify($password, $row['password']);
                if ( $pwdCheck = true) {
                    // user is logged in
                    // create sessions to retreive users info
                    $_SESSION['id'] = $row['id'];
                    $_SESSION['email'] = $row['email'];
                    $_SESSION['name'] = $row['name'];
                    header("Location: /dashboard"); 
                    exit();
                }
                else {
                    header("Location: /inloggen?error=wrngpassword");
                    exit();
                }
            }
            else {
                header("Location: /inloggen?error=wrngemail");
                exit();
            }
        }
    }
} else {
    echo 'Login not set';
}
?>```

标签: phpauthentication

解决方案


推荐阅读