Password_hash无法正常工作

时间:2018-08-23 16:23:08

标签: php cakephp cakephp-3.0

这始终有效

public function hash($password)
    {   
        $password1 = "123456";
        return password_hash($password1,PASSWORD_BCRYPT); 
    }

这永远都行不通

 public function hash($password)
    {    
        return password_hash($password,PASSWORD_BCRYPT); 
    }

有人可以启发我,问题出在哪里? Password_verify首先验证,但第二次验证,我在$ password上完成了var_dump,一切正常。

3 个答案:

答案 0 :(得分:0)

记住hash($ var1,$ var2)是一个php函数(http://php.net/manual/en/function.hash.php)。如果您使用相同的名称编写函数,则会出现以下错误。

Fatal error: Cannot redeclare hash()

使用其他名称,例如

public function hash_new($password)
{    
    return password_hash($password,PASSWORD_BCRYPT); 
}

答案 1 :(得分:0)

这里的问题是CakePHP在$ this-> Users-> save()中两次调用了哈希函数。因此,$ password被重新哈希然后存储,而$ password1 =“ 1234567”在被重新哈希时始终保持不变。

我很抱歉打扰别人。感谢@Rinsad和@Javier尝试了这样的问题并给了我宝贵的时间。

答案 2 :(得分:-1)

hash()是一个PHP函数,因此您不应将其用作自定义函数的名称。尝试使用其他名称。

此外,与以前的版本相比,使用PASSWORD_BCRYPT进行哈希处理在PHP 7.0+中具有不同的行为

在旧版本中: PASSWORD_BCRYPT具有可选的salt参数。您可以始终使用相同的盐,因此对相同的字符串进行哈希处理将每次都呈现完全相同的结果。 如果省略了salt参数,则会得到一个随机的salt值,并且同一字符串的每次哈希运算都会产生不同的输出。

在PHP 7.0+中,取消了salt参数,因此您将始终获得随机的salt,因此每次都会得到不同的输出。