首页 > 解决方案 > password_verify 不返回任何东西

问题描述

当我运行下面的代码时,password_verify 没有返回任何内容。我尝试回显以查看返回的内容,但没有打印任何内容。

我也回应了存储的密码,以确保这不是问题,也不是。我回应了用户输入,这似乎也可以正常工作。

我使用的密码之一是 grayson,散列后是 $2y$10$iK5pADTskgcfo6KRnBXs3e/0LkclrsZb3DSo1bmLubLqd.aaIdnK2

<?php
    $loginEmail = $_POST['loginEmail'];
    $loginPassword = $_POST['loginPassword'];
    $link = mysqli_connect("localhost", "cjramire_wrdp1", 'password', "username");
    $query = "SELECT * FROM `Users` WHERE email = '".mysqli_real_escape_string($link, $loginEmail)."'";
    $result = mysqli_query($link, $query);
    $row = mysqli_fetch_array($result);
    echo $row['password'];
    echo $loginPassword;
    $verify = password_verify($loginPassword, $row['password']);
    echo $verify;
    if($verify){
        echo "Its a match";
    }else{
        echo "nope";
    }

让我知道是否有任何其他信息有帮助,谢谢!

下面我添加了用于将信息推送到数据库中的代码,因为您可以看到 pws 在推送到数据库之前已经过哈希处理。

$signUpEmail =  $_POST['signUpEmail'];
$signUpPassword = $POST['signUpPassword'];
$hash = password_hash($signUpPassword,PASSWORD_DEFAULT);
$link = mysqli_connect("localhost", "cjramire_wrdp1", 'password', "username");
$query = "INSERT INTO `Users` (`email`, `password`) VALUES('$signUpEmail', '$hash')";
mysqli_query($link, $query);

标签: phppasswordspassword-encryptionpassword-hash

解决方案


根据 php.net, 的第二个参数password_verify()必须是

由 password_hash() 创建的哈希。

取自php.net

您的第二个参数似乎是 SQL 查询的结果,因此如果您不将密码存储为由 创建的哈希password_hash()password_verify()将无法按预期工作。


推荐阅读