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
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
if ($_GET['test']) {
header('Location: test.php');
die();
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query);
?>
Reproduksi beberapa efek parasit
dalam kode Anda. Kemudian perbaiki
dengan fungsi die.