Omedelbar omdirigering i PHP

En omdirigering som utförs med funktionen header sker inte i det ögonblick denna funktion anropas. Det beror på att PHP självt inte utför omdirigeringen, utan skickar bara motsvarande HTTP-huvud till webbläsaren.

Det betyder att omdirigeringen bara kommer att ske när PHP har kört hela skriptet till slutet. På grund av detta kan olika parasitära effekter uppstå.

Till exempel, i följande kod vill vi antingen utföra en omdirigering eller en databasförfrågan. Men databasförfrågan kommer att utföras även om det fanns en kommando för omdirigering:

php<?php
  if ($_GET['test']) {
    header('Location: test.php');
  }
  
  $query = "UPDATE users SET changed=1 WHERE id=1";
  mysqli_query($link, $query); // kommer att utföras även vid omdirigering!
?>

För att undvika sådana problem behöver du efter omdirigeringen omedelbart anropa funktionen die, som omedelbart avslutar skriptkörningen och omdirigeringen sker omedelbart:

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

Återskapa någon parasitisk effekt i din kod. Åtgärda sedan den med funktionen die.