Промена лозинке на PHP
Промена лозинке се не може једноставно урадити у личном налогу. Ствар је у томе што корисник може оставити свој рачунар без надзора (на пример, у канцеларији), док је пријављен на нашем сајту. У том случају, ако се дозви једноставна промена лозинке, онда недобронамерни нападач може да промени лозинку у другу, што, наравно, није добро.
Потребно је да се осигура да промена лозинке на нову захтева унос старе лозинке.
Хајде да имплементирамо страницу changePassword.php,
на коју када корисник уђе, видеће форму
са два поља за унос - у прво мора да унесе
стару лозинку, а у друго - нову:
<form action="" method="POST">
<input name="old_password">
<input name="new_password">
<input type="submit" name="submit">
</form>
При клику на дугме за слање, морамо да урадимо следеће:
<?php
$id = $_SESSION['id']; // id корисника из сесије
$query = "SELECT * FROM users WHERE id='$id'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
$hash = $user['password']; // солена лозинка из базе
$oldPassword = $_POST['old_password'];
$newPassword = $_POST['new_password'];
// Проверавамо да ли се хеш из базе подудара са унетом старом лозинком
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 {
// стара лозинка је погрешно унета, приказаћемо поруку
}
?>
Имплементирајте описану промену лозинке.