这始终有效
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,一切正常。
答案 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,因此每次都会得到不同的输出。