PHPда паролни алмаштириш
Паролни алмаштиришни шахсий ҳисоб рақамида оддийгина қилиб бўлмайди. Гап шундаки, фойдаланувчи компьютерини кўз ўнгида бўлмаган ҳолда (масалан, офида) қолдириши мумкин, бизнинг веб-сайтимизга кирилган ҳолда. Бу ҳолатда, агар паролни оддийгина алмаштиришга рухсат берилса, ўчокчи нохушкир фойдаланувчи паролни бошқасига ўзгартириши мумкин, бу, албатта, жудa ёмон.
Паролни янгисига алмаштириш эски паролни киритишни талаб қилиши лозим.
Келтинг, changePassword.php саҳифасини амалга оширайлик,
уңга кирган фойдаланувчи икки киритмали шаклни
кўради - биринчисига у эски паролини, иккинчисига
эса янги паролни киритиши керак:
<form action="" method="POST">
<input name="old_password">
<input name="new_password">
<input type="submit" name="submit">
</form>
Юбориш тугмаси босиlgанда биз куйидагиларни бажаришимиз керак:
<?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 {
// эски пароль нотўғри киритилди, хабар чиқарамиз
}
?>
Тавсирланган паролни алмаштиришни амалга оширинг.