我的PC上有PHP版本5.4因此我无法使用password_hash()
而我使用了crypt()
。
但接下来的问题是如果密码匹配会如何验证?
PHP文档说,如果你使用crypt()
,使用密码通用符的最佳方法是hash_equals()
,但只有PHP 5.5。
我总是得到:
致命错误:在...中调用未定义的函数hash_equals()
答案 0 :(得分:3)
正如你所提到的,php 5.4还没有这个功能,所以你有两个选项可以使用这个非常有用的功能:
更好的方法:
更新到php 5.5 / 5.6并使用当时的本机库
如果那是不可能的:
您可以使用此库:
https://github.com/ircmaxell/password_compat
该库提供了与PHP 5.5正在使用的password_ *函数的向前兼容性。
答案 1 :(得分:2)
你可以像这样比较它们:
<?php
$the_password= crypt('12345', 'aasddas');
$user_entered_pass='125';
if(crypt($user_entered_pass,'aasddas') == $the_password){
echo "right";
}else{
echo "wrong";
}
?>
答案 2 :(得分:0)
简短的回答是password_compat的用途,所以请使用它。
PHP文档说,如果你使用
crypt()
,使用密码通用符的最佳方法是hash_equals()
,但只有PHP 5.5。
crypt()
,而是password_hash()
与password_verify()
一起使用。hash_equals()
在PHP 5.6中添加,而不是5.5。