Cambio de contraseña en PHP

No se puede simplemente cambiar la contraseña en la cuenta personal. El problema es que el usuario puede dejar su computadora desatendida (por ejemplo, en la oficina), estando autorizado en nuestro sitio web. En este caso, si permitimos cambiar simplemente la contraseña, un intruso malintencionado podría cambiar la contraseña por otra, lo que, por supuesto, es muy malo.

Es necesario hacer que el cambio de contraseña a una nueva requiera ingresar la contraseña anterior.

Implementemos la página changePassword.php, al acceder a la cual el usuario verá un formulario con dos inputs: en el primero deberá ingresar su contraseña anterior, y en el segundo, la nueva:

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

Al presionar el botón de envío debemos hacer lo siguiente:

html<?php
  $id = $_SESSION['id']; // id del usuario desde la sesión
  $query = "SELECT * FROM users WHERE id='$id'";
  
  $res = mysqli_query($link, $query);
  $user = mysqli_fetch_assoc($res);
  
  $hash = $user['password']; // contraseña con hash de la BD
  $oldPassword = $_POST['old_password'];
  $newPassword = $_POST['new_password'];
  
  // Verificamos la correspondencia del hash de la base de datos con la contraseña anterior ingresada
  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 {
    // la contraseña anterior se ingresó incorrectamente, mostraremos un mensaje
  }
?>
Задание 1

Implemente el cambio de contraseña descrito.