【问题标题】:password_hash() function on php /getting invalid passwordphp上的password_hash()函数/获取无效密码
【发布时间】:2016-08-21 09:29:43
【问题描述】:

我通过运行此代码得到无效密码。为什么密码与哈希密码不匹配?

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

【问题讨论】:

  • 哈希是什么样的?是否包含$
  • if (password_verify($passwd, $hash)){ // } 就够了,验证时没有第三个参数。
  • 因为您没有打开error_reporting,或者您没有打开display_errors,或者您只是没有阅读手册。 password_verify 正好有 2 个参数。您正在传递 3 个参数。这意味着该函数不会返回,而是会触发错误。

标签: php security password-hash php-password-hash


【解决方案1】:

password_verify 只需要 2 个参数。

所以你只需要这样做:

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

而上面的代码可以简写为:

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

通过使用ternary operators


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

这么说:

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

文件顶部的那个。

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

【讨论】:

  • Tnx 先生,你成就了我的一天:d
猜你喜欢
  • 1970-01-01
  • 2020-01-03
  • 1970-01-01
  • 2023-03-20
  • 2016-01-23
  • 2018-08-21
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
相关资源
最近更新 更多