Øjeblikkelig omdirigering i PHP

En omdirigering udført med funktionen header sker ikke i det øjeblik denne funktion kaldes. PHP udfører nemlig ikke selv omdirigeringen, men sender kun den tilsvarende HTTP-header til browseren.

Det betyder, at omdirigeringen først vil finde sted når PHP har kørt hele scriptet færdigt. På grund af dette kan der opstå forskellige uønskede effekter.

Som et eksempel: i følgende kode ønsker vi at udføre enten en omdirigering eller en databaseforespørgsel. Men databaseforespørgslen vil blive udført, selvom der var en kommando til omdirigering:

php<?php
  if ($_GET['test']) {
    header('Location: test.php');
  }
  
  $query = "UPDATE users SET changed=1 WHERE id=1";
  mysqli_query($link, $query); // vil udføres selv ved omdirigering!
?>

For at undgå sådanne problemer skal man umiddelbart efter omdirigeringen kalde funktionen die, som øjeblikkeligt afslutter scriptets udførelse, og omdirigeringen vil ske med det samme:

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

Genskab en uønsket effekt i din kode. Ret den derefter med hjælp fra funktionen die.