我有一个用于登录应用程序的处理文件。我要么不明白的目的,password_needs_rehash()要么它不起作用。登录正在验证并将我传递到正确的页面。但是我什至无法让代码回显新的哈希值。
我这样做正确吗?
是否if不抛出新的哈希值,因为它并不需要改头换面?如果是这样,如果密码正确散列并存储在数据库中,什么时候需要重新散列?
我的处理文件如下:
$email = $_POST["li_email"];
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$stmt = $conn->query("SELECT * FROM users WHERE email='$email'");
$stmt->execute();
while($row=$stmt->fetch()){ //for each result, do the following
$hash = $row['hash'];
$userPassword = $_POST["li_password"];
if (password_verify($userPassword, $hash)) {
if ( password_needs_rehash($hash, PASSWORD_DEFAULT, ['cost' => 12]) ) {
$newhash = password_hash($userPassword, PASSWORD_DEFAULT, ['cost' => 12]);
echo $newhash;
}
} else {
header('Location: http://' . $_SERVER['HTTP_HOST'] . …Run Code Online (Sandbox Code Playgroud)