所以我使用新的PHP 5.5密码散列API,我不确定是否正确得到了这个。密码散列API查询
我已经试过自动刷新每个登录,有时我失败,即使哈希结果是相同的反正,我觉得我做错了什么。
它可能是我可能错误的查询函数,因为当我检查phpMyAdmin时哈希值甚至没有改变。
if (password_needs_rehash($result_row->user_password_hash, PASSWORD_DEFAULT))
{
$newhash = password_hash(
$_POST['user_password'], PASSWORD_BCRYPT,
['cost' => 12, 'salt' => 'superfreakingsonicdude',]
);
// update hash in database
$this->connection->query(
"UPDATE users SET user_password_hash='" . $newhash .
"' WHERE user_name='".$result_row->user_name."'"
);
}
Here is where you can find all the functions.
据我所知,你正在检查它是否被“PASSWORD_DEFAULT”散列,如果不是,你将使用'PASSWORD_BCRYPT'保存一个散列。如果它们不相同(例如,如果较新版本的PHP将'PASSWORD_DEFAULT'设置为'PASSWORD_ROT13'),则将永远不会使用'PASSWORD_DEFAULT'对其进行散列处理,因此将重新刷新密码。 – 2013-02-13 07:39:41
(总之,使用'PASSWORD_DEFAULT'或者'PASSWORD_BCRYPT',不要混合它们) – 2013-02-13 07:45:23
我意识到,原来的散列是BCRYPT,所以我确实需要设置它。 主要问题是散列不会改变。 – 2013-02-13 07:56:09