PHP password_verify() 不适用于 MySQL

PHP password_verify() doesn't work with MySQL

我使用 PHP 和 MySQL 创建了一个简单的注册登录服务,但是当我尝试登录时,即使我输入了正确的 ID 和密码,它 returns 还是失败了.

我不确定,但我认为 password_verify() 是问题所在。

我的数据库结构在这里

idx, int(10), AUTO_INCREMENT
id, varchar(255)
password, varchar(255)
email, varchar(255)

注册过程在这里

<?php

    header('Content-Type: text/html; charset=utf-8');

    $conn = mysqli_connect("localhost", "luminous", "***password***", "luminous");
    
    $id = $_POST['id'];
    $hashedPassword = password_hash($_POST['password'], PASSWORD_DEFAULT);
    $email = $_POST['email'];

    $query = "INSERT INTO member (id, password, email) VALUES('$id', '$hashedPassword', '$email')";
    
    $result = mysqli_query($conn, $query);

    if ($result === false)
    {
        echo "Failed to store.";
        echo mysqli_error($conn);
    }
    else
    {
?>
        <script>
            alert("Welcome, you've joined my service.");
            // location.href = "../index.php";
        </script>

<?php

    }

?>

登录流程到此

<?php

    header('Content-Type: text/html; charset=utf-8');

    $conn = mysqli_connect("localhost", "luminous", "***password***", "luminous");

    $id = $_POST['id'];
    $password = $_POST['password'];

    $query = "SELECT * FROM member WHERE id ='$id'";
    $result = mysqli_query($conn, $query);

    $row = mysqli_fetch_array($result);
    $hashedPassword = isset($row['password']) ? $row['password'] : false;

    $passwordResult = password_verify($password, $hashedPassword);
    print_r($passwordResult);
    // if ($passwordResult === true)
    if($passwordResult === true)
    {

        session_start();
        $_SESSION['id'] = $row['id'];

    ?>

<script>
    alert("Login successful.")
    location.href = "../index.php";
</script>

<?php

    } else {
    echo "wrong!!!";
?>

<script>
    alert("Login failed.");
    location.href = "../index.php";
</script>

<?php
    }
?>

p.s.) 我为了考试注册了测试账号,ID-lumes密码-lumes邮箱-lumes@lumes.kr。我检查了我的数据库 returns 是否有正确的信息,但是数据库似乎没有问题,因为它返回了准确的信息。

0 : 9
idx : 9
1 : lumes
id : lumes
2 : y$LSjBJGmNMlyY12RU4NTnked3i26i5o7MIWnJ8slu0Y4FWH84vb6o.
password : y$LSjBJGmNMlyY12RU4NTnked3i26i5o7MIWnJ8slu0Y4FWH84vb6o.
3 : lumes@lumes.kr
email : lumes@lumes.kr

我能做些什么来解决这个问题?我需要一些帮助。

谢谢。

(虽然我不善于提问,但还请大家谅解...!)

这可能对你有帮助 php password_verify not working with database

检查哈希值是否正确存储在数据库中。 转储您从数据库中获取的哈希值和哈希密码,并检查它们是否相同。