Kubadilisha Nenosiri kwa PHP
Kubadilisha nenosiri hawezi kufanywa tu kwenye akaunti ya kibinafsi. Jambo ni kwamba mtumiaji anaweza kuacha kompyuta yake bila kulinusuru (kwa mfano, kwenye ofisi), akiwa ameingia kwenye wavuti yetu. Katika hali hii, ikiwa utaruhusu kubadilisha nenosiri tu, basi mtu mbaya-mwenye nia mbaya ataweza kubadilisha nenosiri kuwa lingine, jambo ambalo, bila shaka, ni baya sana.
Ni muhimu kufanya hivi, ili ubadilishaji wa nenosiri kuwa jipya uhitaji uingizaji wa nenosiri la zamani.
Wacha tutekeleze ukurasa changePassword.php,
ambapo mtumiaji ataona fomu
yenye viingilio viwili - katika cha kwanza atahitaji
kuingiza nenosiri lake la zamani, na cha pili - jipya:
<form action="" method="POST">
<input name="old_password">
<input name="new_password">
<input type="submit" name="submit">
</form>
Kwa kubonyeza kitufe cha kutumia tunapaswa kufanya yafuatayo:
<?php
$id = $_SESSION['id']; // id ya mtumiaji kutoka kwa kikao
$query = "SELECT * FROM users WHERE id='$id'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
$hash = $user['password']; // nenosiri lililochumwa kutoka DB
$oldPassword = $_POST['old_password'];
$newPassword = $_POST['new_password'];
// Tuangalie uendanao wa hash kutoka kwa msingi na nenosiri la zamani lililoingizwa
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 {
// nenosiri la zamani limeingizwa vibaya, onyesha ujumbe
}
?>
Tekeleza ubadilishaji wa nenosiri ulioelezewa.