Alteração de senha em PHP

A alteração da senha não pode ser feita simplesmente na conta pessoal. O problema é que o usuário pode deixar o computador desatendido (por exemplo, no escritório), estando logado em nosso site. Nesse caso, se permitirmos alterar a senha simplesmente, um invasor mal-intencionado poderá alterar a senha para outra, o que, é claro, é muito ruim.

É necessário fazer com que a alteração da senha para uma nova exija a inserção da senha antiga.

Vamos implementar a página changePassword.php, ao acessar a qual o usuário verá um formulário com duas entradas - na primeira, ele deverá inserir sua senha antiga, e na segunda - a nova:

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

Ao clicar no botão de envio, devemos fazer o seguinte:

html<?php
  $id = $_SESSION['id']; // id do usuário da sessão
  $query = "SELECT * FROM users WHERE id='$id'";
  
  $res = mysqli_query($link, $query);
  $user = mysqli_fetch_assoc($res);
  
  $hash = $user['password']; // senha com hash do BD
  $oldPassword = $_POST['old_password'];
  $newPassword = $_POST['new_password'];
  
  // Verificamos a correspondência do hash do banco com a senha antiga inserida
  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 {
    // a senha antiga foi inserida incorretamente, exiba uma mensagem
  }
?>
Задание 1

Implemente a alteração de senha descrita.