【问题标题】:password_hash returns NULL密码哈希返回 NULL
【发布时间】:2015-08-26 12:10:46
【问题描述】:

为什么documentation 声明password_hash 可以返回字符串或值 false,但下面的代码行返回 NULL?

$password = password_hash($password1, PASSWORD_BDCRYPT, array( 'cost' => 10 ));

【问题讨论】:

  • 您有问题吗?
  • 好像他们不得不在某个地方起飞,Sam - @JayBlanchard 也许他们回来时我们都会喝杯咖啡和丹麦语;-)
  • 我能吃,拉尔夫 @Fred-ii-
  • 只有午餐时间... 3-4 小时路程 Sam - @JayBlanchard 迫不及待地想听到那一声哨响。
  • @JayBlanchard 我以问题的形式改写了它。

标签: php password-hash


【解决方案1】:

尽管没有记录,但当为算法提供不正确的值时,该函数确实返回 NULL。

目前支持的常量有:

  • PASSWORD_BCRYPT
  • PASSWORD_DEFAULT

在这种情况下,一个错字(PASSWORD_BDCRYPT 而不是PASSWORD_BCRYPT)会导致传递 NULL 的值,这反过来又会导致与返回相同的值。


编辑:之前未定义的任何其他字符串也将评估为 NULL。

【讨论】:

  • 有趣。您是否尝试过使用任何其他字符串,例如 ABCDEFG_HIJK 或 XXXXXXXXXXX?
  • @Fred-ii- 之前没有定义的任何东西在 php 中被评估为NULL,因此没有理由尝试不同的未定义字符串,结果将是相同的。跨度>
  • 如果 cmets 被删除并为问题的未来访问者提供,那么应该在您的问答中添加一些内容。
【解决方案2】:

如前所述,不正确的参数会导致返回 NULL。只是为了完整:请注意,这不仅适用于不正确的算法编号,还适用于提供不正确的 $options 参数 - 例如调用:

password_hash('something', PASSWORD_DEFAULT, 10);

也将返回 NULL 而没有其他错误。

【讨论】:

    猜你喜欢
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2020-04-19
    • 2023-04-08
    • 2014-11-14
    相关资源
    最近更新 更多