密码哈希返回空值。

3

为什么文档中说password_hash函数可能返回字符串或false,但是下面这行代码返回了NULL?

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

2
你有什么问题吗? - Jay Blanchard
似乎他们得离开一会儿,Sam。- @JayBlanchard 或许等他们回来时我们都可以喝杯咖啡,吃个丹麦点心;-) - Funk Forty Niner
我可以吃了,Ralph @Fred-ii- - Jay Blanchard
午餐时间还有3-4个小时... Sam - @JayBlanchard 期待那声哨响。 - Funk Forty Niner
@JayBlanchard 我已经将其改为问题形式。 - v010dya
2个回答

4
尽管它没有记录,但是当提供一个不正确的算法值时,该函数确实会返回NULL。
当前支持的常量包括:
- PASSWORD_BCRYPT - PASSWORD_DEFAULT
在这种情况下,如果出现了错别字(如PASSWORD_BDCRYPT而不是PASSWORD_BCRYPT),则传递的值将为NULL,从而导致相同的返回值。
编辑:任何以前未定义的其他字符串也将计算为NULL。

有趣。你尝试过使用其他字符串吗?例如ABCDEFG_HIJK或XXXXXXXXXXX? - Funk Forty Niner
@Fred-ii- 在 PHP 中,任何未被预先定义的内容都会被评估为“NULL”,因此尝试不同未定义的字符串是没有意义的,结果将是相同的。 - v010dya
那应该是添加到你的问答中的内容,以防评论被删除并为未来的问题访问者提供帮助。 - Funk Forty Niner

2

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

password_hash('something', PASSWORD_DEFAULT, 10);

如果没有其他错误,它也会返回NULL。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接