Välitön uudelleenohjaus PHP:ssä

Uudelleenohjaus, joka suoritetaan header-funktiolla, ei tapahdu heti funktion kutsun yhteydessä. Loppujen lopuksi PHP ei itse suorita uudelleenohjausta, vaan ainoastaan lähettää vastaavan HTTP-otsikon selaimelle.

Tämä tarkoittaa, että uudelleenohjaus tapahtuu vasta kun PHP on suorittanut koko skriptin loppuun. Tämän vuoksi voi ilmetä erilaisia haitallisia vaikutuksia.

Esimerkkinä seuraavassa koodissa haluamme suorittaa joko uudelleenohjauksen tai tietokantakyselyn. Mutta tietokantakysely suoritetaan, vaikka uudelleenohjauskomento olisi annettu:

php<?php
  if ($_GET['test']) {
    header('Location: test.php');
  }
  
  $query = "UPDATE users SET changed=1 WHERE id=1";
  mysqli_query($link, $query); // suoritetaan vaikka uudelleenohjaus!
?>

Välttääksesi tällaiset ongelmat tulee heti uudelleenohjauksen jälkeen kutsua die-funktiota, joka keskeyttää välittömästi skriptin suorituksen ja uudelleenohjaus tapahtuu samantien:

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

Toteuta jokin haitallinen vaikutus koodissasi. Korjaa sitten se die-funktion avulla.