PHP'de Parola Değiştirme
Parola değişikliği kişisel hesapta basitçe yapılamaz. Bunun nedeni, kullanıcının bilgisayarını bizim sitemizde oturum açmış halde gözetimsiz bırakabilmesidir (örneğin, ofiste). Bu durumda, eğer parolayı basitçe değiştirmeye izin verilirse, kötü niyetli bir saldırgan parolayı başka bir parolayla değiştirebilir ki bu, elbette çok kötüdür.
Yeni bir parolaya değiştirmenin eski parolanın girilmesini gerektirmesi için yapılması gerekmektedir.
Hadi changePassword.php sayfasını
gerçekleştirelim, bu sayfaya giren kullanıcı
iki inputlu bir form görecek - ilkine eski
parolasını, ikincisine ise yeni parolasını
girmesi gerekecek:
<form action="" method="POST">
<input name="old_password">
<input name="new_password">
<input type="submit" name="submit">
</form>
Gönderme butonuna tıklandığında şunları yapmalıyız:
<?php
$id = $_SESSION['id']; // oturumdan kullanıcının id'si
$query = "SELECT * FROM users WHERE id='$id'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
$hash = $user['password']; // Veritabanındaki tuzlanmış parola
$oldPassword = $_POST['old_password'];
$newPassword = $_POST['new_password'];
// Veritabanındaki hash ile girilen eski parolanın eşleşmesini kontrol et
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 {
// eski parola yanlış girildi, mesaj göster
}
?>
Açıklanan parola değişikliğini gerçekleştirin.