Ndryshimi i fjalëkalimit në PHP

Ndryshimi i fjalëkalimit nuk mund të bëhet thjesht në kabinetin personal. Çështja është se përdoruesi mund të lërë kompjuterin e tij pa mbikëqyrje (për shembull, në zyrë), duke qenë i autorizuar në faqen tonë të internetit. Në këtë rast, nëse lejohet të ndryshohet thjesht fjalëkalimi, atëherë një keqbërës-i keqdashës do të mund të ndryshojë fjalëkalimin në një tjetër, gjë që, sigurisht, është shumë e keqe.

Është e nevojshme të bëhet në mënyrë që ndryshimi i fjalëkalimit në një të ri të kërkojë futjen e fjalëkalimit të vjetër.

Le të implementojmë faqen changePassword.php, duke hyrë në të cilën përdoruesi do të shohë një formular me dy inpute - në të parin ai do të duhet të fusë fjalëkalimin e vjetër, dhe në të dytin - të rin:

html<form action="" method="POST">
  <input name="old_password">
  <input name="new_password">
  <input type="submit" name="submit">
</form>

Me klikimin në butonin e dërgimit ne duhet të bëjmë sa vijon:

html<?php
  $id = $_SESSION['id']; // id e përdoruesit nga sesioni
  $query = "SELECT * FROM users WHERE id='$id'";
  
  $res = mysqli_query($link, $query);
  $user = mysqli_fetch_assoc($res);
  
  $hash = $user['password']; // fjalëkalimi i kripur nga DB
  $oldPassword = $_POST['old_password'];
  $newPassword = $_POST['new_password'];
  
  // Kontrollojmë përputhjen e hash nga baza me fjalëkalimin e vjetër të futur
  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 {
    // fjalëkalimi i vjetër është futur gabimisht, do të shfaqim mesazh
  }
?>
Задание 1

Implementoni ndryshimin e përshkruar të fjalëkalimit.