Parooli muutmine PHP-s
Parooli muutmist ei saa lihtsalt teha isikukontos. Asjaolu on selles, et kasutaja võib jätta oma arvuti järelevalveta (näiteks kontoris), olles meie veebisaidil sisse logitud. Sel juhul, kui lubada lihtsalt parooli muutmist, siis pahatahtlik ründaja saab parooli teiseks muuta, mis muidugi on väga halb.
On vaja teha nii, et parooli muutmine uueks nõuaks vana parooli sisestamist.
Rakendame lehekülje changePassword.php,
millele sisse minnes näeb kasutaja vormi
kahe sisendväljaga - esimesse peab ta
sisestama oma vana parooli ja teise - uue:
<form action="" method="POST">
<input name="old_password">
<input name="new_password">
<input type="submit" name="submit">
</form>
Saatmise nuppu vajutades peame tegema järgmist:
<?php
$id = $_SESSION['id']; // kasutaja id seansist
$query = "SELECT * FROM users WHERE id='$id'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
$hash = $user['password']; // soolatald parool andmebaasist
$oldPassword = $_POST['old_password'];
$newPassword = $_POST['new_password'];
// Kontrollime andmebaasist saadud räsi ja sisestatud vana parooli vastavust
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 {
// vana parool sisestati valesti, kuvame teate
}
?>
Rakendage kirjeldatud parooli muutmine.