首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP password_verify()不适用于MySQL

PHP password_verify()不适用于MySQL
EN

Stack Overflow用户
提问于 2022-01-31 05:51:46
回答 1查看 268关注 0票数 0

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

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

我的数据库结构在这里

代码语言:javascript
复制
idx, int(10), AUTO_INCREMENT
id, varchar(255)
password, varchar(255)
email, varchar(255)

注册过程就在这里

代码语言:javascript
复制
<?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

    }

?>

登录过程在这里

代码语言:javascript
复制
<?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.我检查了我的数据库是否返回正确的信息,但是数据库似乎没有问题,因为它返回了准确的信息。

代码语言:javascript
复制
0 : 9
idx : 9
1 : lumes
id : lumes
2 : $2y$10$LSjBJGmNMlyY12RU4NTnked3i26i5o7MIWnJ8slu0Y4FWH84vb6o.
password : $2y$10$LSjBJGmNMlyY12RU4NTnked3i26i5o7MIWnJ8slu0Y4FWH84vb6o.
3 : lumes@lumes.kr
email : lumes@lumes.kr

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

谢谢。

(我请求你的理解,尽管我不擅长问问题……!)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-31 06:19:14

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

检查散列是否正确地存储在数据库中。转储您从数据库获得的散列和散列密码,并检查它们是否相同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70921764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档