Redirection instantanée en PHP

La redirection, effectuée à l'aide de la fonction header, ne se produit pas au moment de l'appel de cette fonction. En effet, PHP lui-même n'effectue pas la redirection, mais envoie seulement l'en-tête HTTP correspondant au navigateur.

Cela signifie que la redirection se produira seulement lorsque PHP aura exécuté le script entier jusqu'à la fin. À cause de cela, divers effets parasites peuvent survenir.

Par exemple, dans le code suivant, nous voulons effectuer soit une redirection, soit une requête à la base de données. Mais la requête à la base de données s'exécutera même si il y avait une commande de redirection :

php<?php
  if ($_GET['test']) {
    header('Location: test.php');
  }
  
  $query = "UPDATE users SET changed=1 WHERE id=1";
  mysqli_query($link, $query); // s'exécutera même lors de la redirection !
?>

Pour éviter de tels problèmes, il faut immédiatement après la redirection appeler la fonction die, qui mettra fin instantanément à l'exécution du script et la redirection se produira immédiatement :

php<?php
  if ($_GET['test']) {
    header('Location: test.php');
    die();
  }
  
  $query = "UPDATE users SET changed=1 WHERE id=1";
  mysqli_query($link, $query);
?>
Задание 1

Reproduisez un effet parasite quelconque dans votre code. Puis corrigez-le à l'aide de la fonction die.