-2

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

<?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.';
    }
?>
4

1 回答 1

0

password_verify只需要 2 个参数。

所以你只需要这样做:

if(password_verify($passwd, $hash)) { ... }

上面的代码可以缩短为:

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

通过使用三元运算符


转动error_reporting也是一个好主意,通常在开发时。

所以说:

ini_set("display_errors", "1");
error_reporting(E_ALL);

在文件的顶部。

当您要将其移至生产阶段时,请删除它们。

于 2016-08-21T09:36:49.477 回答