我用它来哈希密码:https://github.com/ircmaxell/password_compat
$hash = password_hash($pass1, PASSWORD_BCRYPT, array("cost" => 16));
if (password_verify($password, $hash)) {
/* Valid */
} else {
/* Invalid */
}
有效。它散列了密码。但我不知道如何在登录页面验证密码。我曾尝试过视觉,但它也不适用于会话。
答案 0 :(得分:2)
你必须把哈希放在数据库中
第一步:在数据库中创建并存储哈希
$hash = password_hash($pass1, PASSWORD_BCRYPT, array("cost" => 16));
第二步:登录
$hash = // hash of user from database by unique id
$password = // string submit by user from login form
if (password_verify($password, $hash)) {
if (password_needs_rehash($hash, PASSWORD_BCRYPT, array("cost" => 16))) {
$hash = password_hash($password, PASSWORD_BCRYPT, array("cost" => 16));
/* Store new hash in db */
}
} else {
/* Invalid */
}
希望它会对你有所帮助
答案 1 :(得分:0)
我过去的方式是以下步骤:
1)用户提交用户名/密码组合。
2)我看到数据库中是否存在用户名,如果是,我从数据库中提取该用户记录,如果不存在,我向用户提出一般错误(即错误的用户名/密码组合)< / p>
3)然后,我使用提交密码的password_verify
函数与连接到他们尝试登录的用户的哈希密码。
4)如果是真的,他们会登录,否则我会向用户提出相同的一般错误(错误的用户名/密码组合)
答案 2 :(得分:0)
基本上你必须在登录页面中对用户放入的密码进行哈希处理,并检查数据库中保存的哈希是否等于用户在登录时发送的哈希密码。