6).根据机器的具体计算能力修改password_hash()的第三个值。计算哈希值一般需要0.1s-0.5s。
7).密码的哈希值存储在varchar(255)类型的数据库列中。
8).登录用户的一般流程
POST /login.php HTTP1.1 Content-length: 43 Content-Type: application/x-www-form-urlencoded email=xiao@hello.wordl&pasword=nihao
session_start();
try {
$email = filter_input(INPUT_POST, 'email');
$password = filter_iinput(INPUT_POST, 'password');
$user = User::findByEmail($email);
if (password_verify($password, $user->password_hash) === false) {
throw new Exception(''Invalid password);
}
//如果需要的话,重新计算密码的哈希值
$currentHasAlgorithm = PASSWORD_DEFAULT;
$currentHashOptions = array('cost' => 15);
$passwordNeedsRehash = password_needs_rehash(
$user->password_hash,
$currentHasAlgorithm,
$currentHasOptions
);
if ($passwordNeedsRehash === true) {
$user->password_hash = password_hash(
$password,
$currentHasAlgorithm,
$currentHasOptions
);
$user->save();
}
$_SESSION['user_logged_in'] = 'yes';
$_SESSION['user_email'] = $email;
header('HTTP/1.1 302 Redirect');
header('Location: /user-profile.php');
} catch (Exception) {
header('HTTP/1.1 401 Unauthorized');
echo $e->getMessage();
}
9).PHP5.5.0版本之前的密码哈希API无法使用,推荐使用ircmaxell/password-compat组件。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对易采站长站的支持。







