Sprememba gesla v PHP
Sprememba gesla ni mogoča preprosto v osebnem računu. Bistvo je v tem, da lahko uporabnik pusti svoj računalnik brez nadzora (na primer v pisarni), medtem ko je prijavljen na našo spletno stran. V tem primeru, če dovolimo preprosto spreminjanje gesla, lahko zlonamernik-nevšečnež spremeni geslo v drugo, kar je seveda zelo slabo.
Potrebno je narediti tako, da sprememba gesla na novo zahteva vnos starega gesla.
Implementirajmo stran changePassword.php,
ob obisku katere bo uporabnik videl obrazec
z dvema vnosnima poljema - v prvo mora
vnesti svoje staro geslo, v drugo pa novo:
<form action="" method="POST">
<input name="old_password">
<input name="new_password">
<input type="submit" name="submit">
</form>
Ob kliku na gumb za pošiljanje moramo narediti naslednje:
<?php
$id = $_SESSION['id']; // id uporabnika iz seje
$query = "SELECT * FROM users WHERE id='$id'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
$hash = $user['password']; // zgoščeno geslo iz baze podatkov
$oldPassword = $_POST['old_password'];
$newPassword = $_POST['new_password'];
// Preverimo ujemanje zgoščene vrednosti iz baze z vnesenim starim geslom
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 {
// staro geslo je napačno, izpišemo sporočilo
}
?>
Implementirajte opisano spremembo gesla.