Byte av lösenord på PHP
Byte av lösenord kan inte bara göras i det personliga kontot. Saken är att användaren kan lämna sin dator utan uppsikt (till exempel, på kontoret), medan hen är inloggad på vår webbplats. I det här fallet, om man tillåter att bara byta lösenord, kan en illvillig obehörig byta lösenordet till ett annat, vilket, naturligtvis, är mycket dåligt.
Det är nödvändigt att se till att byte av lösenord till ett nytt kräver inmatning av det gamla lösenordet.
Låt oss implementera sidan changePassword.php,
genom att gå in på vilken användaren kommer att se ett formulär
med två inmatningsfält - i det första ska hen
mata in sitt gamla lösenord, och i det andra - det nya:
<form action="" method="POST">
<input name="old_password">
<input name="new_password">
<input type="submit" name="submit">
</form>
Vid klick på skickaknappen måste vi göra följande:
<?php
$id = $_SESSION['id']; // användarens id från sessionen
$query = "SELECT * FROM users WHERE id='$id'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
$hash = $user['password']; // saltat lösenord från databasen
$oldPassword = $_POST['old_password'];
$newPassword = $_POST['new_password'];
// Kontrollerar överensstämmelsen mellan hash från databasen och det inskrivna gamla lösenordet
if (password_verify($oldPassword, $hash)) {
$newPasswordHash = password_hash($newPassword, PASSWORD_DEFAULT);
$query = "UPDATE users SET password='$newPasswordHash' WHERE id='$id'";
mysqli_query($link, $query);
} else {
// det gamla lösenordet är felaktigt, visa ett meddelande
}
?>
Implementera den beskrivna lösenordsbytet.