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:

html<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:

html<?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
  }
?>
Задание 1

Açıklanan parola değişikliğini gerçekleştirin.