Змена пароля на 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 {
// стары пароль уведзены няправільна, вывядзем паведамленне
}
?>
Рэалізуйце апісаную змену пароля.