Mengubah Kata Sandi dengan PHP
Mengubah kata sandi tidak bisa dilakukan begitu saja di akun pribadi. Masalahnya, pengguna mungkin meninggalkan komputernya tanpa pengawasan (misalnya, di kantor), dalam keadaan sudah login ke situs kita. Dalam kasus ini, jika kita mengizinkan perubahan kata sandi begitu saja, maka orang yang berniat jahat dapat mengubah kata sandi menjadi yang lain, yang tentu saja sangat buruk.
Perlu dibuat agar perubahan kata sandi menjadi yang baru memerlukan input kata sandi lama.
Mari kita implementasikan halaman changePassword.php,
yang ketika diakses pengguna akan melihat formulir
dengan dua input - di input pertama dia harus
memasukkan kata sandi lamanya, dan di input kedua - kata sandi baru:
<form action="" method="POST">
<input name="old_password">
<input name="new_password">
<input type="submit" name="submit">
</form>
Ketika tombol submit ditekan, kita harus melakukan hal berikut:
<?php
$id = $_SESSION['id']; // id user dari session
$query = "SELECT * FROM users WHERE id='$id'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
$hash = $user['password']; // password yang di-hash dari database
$oldPassword = $_POST['old_password'];
$newPassword = $_POST['new_password'];
// Memeriksa kecocokan hash dari database dengan kata sandi lama yang dimasukkan
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 {
// kata sandi lama dimasukkan dengan salah, tampilkan pesan
}
?>
Implementasikan perubahan kata sandi yang telah dijelaskan.