Password_hash 奇怪地没有工作
Password_hash is not working Strangely
这总是有效的
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 并且每件事 returns 都很好。
记住 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);
}
hash() 是一个 PHP 函数,因此您不应将其用作自定义函数的名称。尝试使用其他名称。
此外,与以前的版本
相比,PASSWORD_BCRYPT 的散列在 PHP 7.0+ 中有不同的行为
在旧版本中:
PASSWORD_BCRYPT 有一个可选的 salt 参数。您可以始终使用相同的盐,因此散列相同的字符串每次都会呈现完全相同的结果。
如果您省略了 salt 参数,您将得到一个随机盐,并且同一字符串的每次散列都会产生不同的输出。
在 PHP 7.0+ 中,salt 参数被删除,因此您将始终获得随机盐,因此每次都有不同的输出。
这里的问题是 cakePHP 在 $this->Users->save() 中两次调用散列函数。所以 $password 被重新散列然后存储,而 $password1="1234567" 在重新散列时始终保持不变。
真的很抱歉打扰了大家。感谢@Rinsad 和@Javier 尝试这样的问题并给我宝贵的时间。
这总是有效的
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 并且每件事 returns 都很好。
记住 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);
}
hash() 是一个 PHP 函数,因此您不应将其用作自定义函数的名称。尝试使用其他名称。
此外,与以前的版本
相比,PASSWORD_BCRYPT 的散列在 PHP 7.0+ 中有不同的行为在旧版本中: PASSWORD_BCRYPT 有一个可选的 salt 参数。您可以始终使用相同的盐,因此散列相同的字符串每次都会呈现完全相同的结果。 如果您省略了 salt 参数,您将得到一个随机盐,并且同一字符串的每次散列都会产生不同的输出。
在 PHP 7.0+ 中,salt 参数被删除,因此您将始终获得随机盐,因此每次都有不同的输出。
这里的问题是 cakePHP 在 $this->Users->save() 中两次调用散列函数。所以 $password 被重新散列然后存储,而 $password1="1234567" 在重新散列时始终保持不变。
真的很抱歉打扰了大家。感谢@Rinsad 和@Javier 尝试这样的问题并给我宝贵的时间。