Jelszó megváltoztatása PHP-ban
A jelszó megváltoztatása nem egyszerűen megoldható a személyes fiókban. Az a helyzet, hogy a felhasználó otthagyhatja a számítógépét őrizetlenül (például az irodában), miközben be van jelentkezve az oldalunkra. Ebben az esetben, ha egyszerűen lehetővé tesszük a jelszó megváltoztatását, akkor egy rosszindulatú támadó képes lesz megváltoztatni a jelszót egy másikra, ami természetesen nagyon rossz.
Úgy kell eljárni, hogy az új jelszóra való váltás a régi jelszó megadását igényelje.
Valósítsuk meg a changePassword.php oldalt,
ahova belépve a felhasználó egy űrlapot fog látni
két beviteli mezővel - az elsőbe a
rég jelszavát kell beírnia,
a másodikba pedig az újat:
<form action="" method="POST">
<input name="old_password">
<input name="new_password">
<input type="submit" name="submit">
</form>
A küldés gomb megnyomásakor a következőt kell tennünk:
<?php
$id = $_SESSION['id']; // a felhasználó id-ja a session-ből
$query = "SELECT * FROM users WHERE id='$id'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
$hash = $user['password']; // a sózott jelszó az adatbázisból
$oldPassword = $_POST['old_password'];
$newPassword = $_POST['new_password'];
// Ellenőrizzük az adatbázisból származó hash és a bevitt régi jelszó egyezését
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 {
// a régi jelszó helytelenül lett megadva, jelenítsünk meg üzenetet
}
?>
Valósítsa meg az ismertetett jelszómódosítást.