Redirect Instan di PHP

Redirect yang dilakukan dengan fungsi header tidak terjadi pada saat fungsi tersebut dipanggil. Soalnya PHP sendiri tidak melakukan redirect, tapi hanya mengirim header HTTP yang sesuai ke browser.

Ini berarti redirect hanya akan terjadi ketika PHP mengeksekusi seluruh skrip sampai selesai. Karena ini, berbagai efek parasit dapat terjadi.

Sebagai contoh, dalam kode berikut kita ingin mengeksekusi redirect atau query ke database. Tapi query ke database akan tetap dieksekusi bahkan jika ada perintah untuk redirect:

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

Untuk menghindari masalah seperti ini, perlu langsung setelah redirect memanggil fungsi die, yang akan segera mengakhiri eksekusi skrip dan redirect akan terjadi seketika:

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

Reproduksi beberapa efek parasit dalam kode Anda. Kemudian perbaiki dengan fungsi die.