Истанчани редирект у PHP-у

Редирект, извршен помоћу функције header не дешава се у моменту позивања те функције. Наиме, сам PHP не извршава редирект, већ само шаље одговарајући HTTP заглавље у браузер.

То значи да ће се редирект десити тек када PHP изврши цео скрипт до краја. Због тога могу да се појаве разни паразитски ефекти.

На пример, у следећем коду желимо да извршимо или редирект, или упит ка бази. Али упит ка бази ће се извршити чак и ако је дошло до команде за редирект:

php<?php
  if ($_GET['test']) {
    header('Location: test.php');
  }
  
  $query = "UPDATE users SET changed=1 WHERE id=1";
  mysqli_query($link, $query); // извршиће се чак и при редиректу!
?>

Да би се избегли овакви проблеми потребно је одмах након редиректа позвати функцију die, која ће истанчано прекинути извршавање скрипта и редирект ће се десити одмах:

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

Репродукујте неки паразитски ефекат у вашем коду. Затим га исправите помоћу функције die.