Schimbarea parolei în PHP
Schimbarea parolei nu poate fi făcută simplu în contul personal. Problema este că utilizatorul își poate lăsa calculatorul fără supraveghere (de exemplu, la birou), fiind autorizat pe site-ul nostru. În acest caz, dacă am permite schimbarea simplă a parolei, atunci un infractor cu intenții rele ar putea schimba parola cu alta, ceea ce, desigur, este foarte rău.
Este necesar să facem astfel încât schimbarea parolei cu una nouă să necesite introducerea parolei vechi.
Să implementăm pagina changePassword.php,
accesând care utilizatorul va vedea un formular
cu două câmpuri de introducere - în primul trebuie să
introducă parola veche, iar în al doilea - parola nouă:
<form action="" method="POST">
<input name="old_password">
<input name="new_password">
<input type="submit" name="submit">
</form>
La apăsarea butonului de trimitere trebuie să facem următoarele:
<?php
$id = $_SESSION['id']; // id-ul utilizatorului din sesiune
$query = "SELECT * FROM users WHERE id='$id'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
$hash = $user['password']; // parola hash-uită din BD
$oldPassword = $_POST['old_password'];
$newPassword = $_POST['new_password'];
// Verificăm corespondența hash-ului din baza de date cu parola veche introdusă
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 {
// parola veche a fost introdusă incorect, afișăm un mesaj
}
?>
Implementați schimbarea parolei descrisă.