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']; // пароли хешии аз PБ
$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 {
// пароли кӯҳна нодуруст ворид шудааст, паёмро чоп мекунем
}
?>
Иваз кардани пароли дар шарҳ додашударо амалӣ кунед.