Azonnali átirányítás PHP-ban

A header függvénnyel végrehajtott átirányítás nem a függvény hívásakor történik meg. Hiszen a PHP maga nem hajtja végre az átirányítást, csak egy megfelelő HTTP fejlécet küld a böngészőnek.

Ez azt jelenti, hogy az átirányítás csak akkor fog megtörténni, amikor a PHP végrehajtja a teljes szkriptet a végéig. Emiatt különféle káros hatások léphetnek fel.

Példaként a következő kódban azt szeretnénk, hogy vagy átirányítás történjen, vagy adatbázis-lekérdezés. De az adatbázis-lekérdezés végrehajtódik, még akkor is, ha az átirányítás parancsa szólt:

php<?php
  if ($_GET['test']) {
    header('Location: test.php');
  }
  
  $query = "UPDATE users SET changed=1 WHERE id=1";
  mysqli_query($link, $query); // végrehajtódik még átirányítás esetén is!
?>

Hogy elkerüljük az ilyen problémákat, közvetlenül az átirányítás után meg kell hívni a die függvényt, amely azonnal megszakítja a szkript végrehajtását, és az átirányítás azonnal megtörténik:

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

Reprodukáljon valamilyen káros hatást a kódjában. Majd javítsa ki a die függvény segítségével.