Endring av passord på PHP
Endring av passord kan ikke bare gjøres i den personlige kontoren. Saken er at brukeren kan forlate datamaskinen uten tilsyn (for eksempel, på kontoret), mens han er autorisert på vår nettsted. I dette tilfellet, hvis du tillater enkelt endre passord, kan en ondsinnet skurk endre passordet til et annet, noe som selvfølgelig er veldig dårlig.
Det er nødvendig å gjøre det slik at endring av passord til et nytt krevde inntasting av det gamle passordet.
La oss implementere siden changePassword.php,
ved å gå inn på som brukeren vil se et skjema
med to inndata - i den første må han
skrive inn sitt gamle passord, og i den andre - det nye:
<form action="" method="POST">
<input name="old_password">
<input name="new_password">
<input type="submit" name="submit">
</form>
Ved å trykke på sendeknappen må vi gjøre følgende:
<?php
$id = $_SESSION['id']; // brukerens id fra sesjonen
$query = "SELECT * FROM users WHERE id='$id'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
$hash = $user['password']; // saltet passord fra databasen
$oldPassword = $_POST['old_password'];
$newPassword = $_POST['new_password'];
// Sjekker samsvar mellom hash fra databasen og innskrevet gammelt passord
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 {
// gammelt passord er feil innskrevet, vis melding
}
?>
Implementer den beskrevne endringen av passord.