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 {
// ескі пароль дұрыс енгізілмеген, хабар шығару
}
?>
Сипатталған парольді өзгертуді жүзеге асырыңыз.