Passwortänderung in PHP
Die Passwortänderung kann nicht einfach im persönlichen Bereich durchgeführt werden. Die Sache ist die, dass der Benutzer seinen Computer unbeaufsichtigt lassen könnte (zum Beispiel, im Büro), während er auf unserer Website angemeldet ist. In diesem Fall, wenn man einfach erlauben würde, das Passwort zu ändern, könnte ein böswilliger Angreifer das Passwort auf ein anderes ändern, was natürlich sehr schlecht ist.
Es ist notwendig, dass die Änderung des Passworts zu einem neuen die Eingabe des alten Passworts erfordert.
Lassen Sie uns die Seite changePassword.php implementieren.
Wenn der Benutzer sie aufruft, sieht er ein Formular
mit zwei Eingabefeldern - in das erste muss er
sein altes Passwort eingeben, und in das zweite - das neue:
<form action="" method="POST">
<input name="old_password">
<input name="new_password">
<input type="submit" name="submit">
</form>
Beim Klick auf den Senden-Button müssen wir Folgendes tun:
<?php
$id = $_SESSION['id']; // id des Users aus der Session
$query = "SELECT * FROM users WHERE id='$id'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
$hash = $user['password']; // gehashtes Passwort aus der DB
$oldPassword = $_POST['old_password'];
$newPassword = $_POST['new_password'];
// Wir prüfen die Übereinstimmung des Hashs aus der Datenbank mit dem eingegebenen alten Passwort
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 {
// das alte Passwort wurde falsch eingegeben, wir geben eine Meldung aus
}
?>
Implementieren Sie die beschriebene Passwortänderung.