Wachtwoord wijzigen in PHP
Het wijzigen van een wachtwoord kan niet zomaar in het persoonlijk account worden gedaan. Het punt is dat een gebruiker zijn computer onbeheerd kan achterlaten (bijvoorbeeld op kantoor), terwijl hij is ingelogd op onze website. In dat geval, als het toegestaan zou zijn om simpelweg het wachtwoord te wijzigen, dan zou een kwaadwillende het wachtwoord kunnen veranderen naar een ander, wat natuurlijk erg slecht is.
Het is nodig om het zo te maken, dat het wijzigen van het wachtwoord naar een nieuwe, de invoer van het oude wachtwoord vereist.
Laten we de pagina changePassword.php implementeren,
waar de gebruiker bij het bezoeken een formulier
met twee invoervelden zal zien - in het eerste moet hij
zijn oude wachtwoord invoeren, en in het tweede - het nieuwe:
<form action="" method="POST">
<input name="old_password">
<input name="new_password">
<input type="submit" name="submit">
</form>
Bij het indrukken van de verzendknop moeten we het volgende doen:
<?php
$id = $_SESSION['id']; // id van de gebruiker uit de sessie
$query = "SELECT * FROM users WHERE id='$id'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
$hash = $user['password']; // gezouten wachtwoord uit de database
$oldPassword = $_POST['old_password'];
$newPassword = $_POST['new_password'];
// Controleren of de hash uit de database overeenkomt met het ingevoerde oude wachtwoord
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 {
// oud wachtwoord incorrect ingevoerd, toon een bericht
}
?>
Implementeer de beschreven wachtwoordwijziging.