offline version v3
Запись на курсы по HTML, CSS, JavaScript, PHP, фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
⊗ppPmAuPCh 387 of 405 menu

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

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