Смена пароля на 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 { // старый пароль введен неверно, выведем сообщение } ?>

Реализуйте описанную смену пароля.



Чат с GPT Компилятор