php上的password_hash()函数/获取无效密码

php上的password_hash()函数/获取无效密码,php,security,password-hash,php-password-hash,Php,Security,Password Hash,Php Password Hash,我通过运行此代码获得无效密码。为什么密码与散列密码不匹配? <?php $passwd = "imad"; $hash = password_hash($passwd,PASSWORD_DEFAULT,['cost'=>10]); echo "$passwd".' :'.$hash."<br/><br/>"; if (password_verify($passwd, $hash,['cost'=>10])) {

我通过运行此代码获得无效密码。为什么密码与散列密码不匹配?

<?php
    $passwd = "imad";
    $hash = password_hash($passwd,PASSWORD_DEFAULT,['cost'=>10]);
    echo "$passwd".' :'.$hash."<br/><br/>";


    if (password_verify($passwd, $hash,['cost'=>10])) {
        echo 'Password is valid!';
    }   else {
        echo 'Invalid password.';
    }
?>

密码\u验证
只需要两个参数

所以你需要做的只是:

if(password_verify($passwd, $hash)) { ... }
上述代码可缩短为:

(password_verify($passwd, $hash)) ? : echo "Password is valid!" : echo "Password is invalid."
通过使用


通常在开发过程中,打开
错误报告
也是一个好主意

所以说:

ini_set("display_errors", "1");
error_reporting(E_ALL);
在你档案的顶端


当您要将其移动到生产阶段时,请将其删除。

哈希是什么样子的?它是否包含
$
如果(password\u verify($passwd,$hash)){/}
足够,验证时没有第三个参数。因为您没有打开
错误报告
,或者没有打开
显示错误
,或者您只是没有阅读手册。只接受2个参数。您正在传递3个参数。这意味着函数不会返回,而是会触发一个错误