PHP'de Anında Yönlendirme

header fonksiyonu kullanılarak yapılan yönlendirme, bu fonksiyon çağrıldığı anda gerçekleşmez. Sonuçta PHP yönlendirmeyi kendisi yapmaz, sadece ilgili HTTP başlığını tarayıcıya gönderir.

Bu, yönlendirmenin ancak PHP tüm betiği sonuna kadar çalıştırdığında gerçekleşeceği anlamına gelir. Bu durum çeşitli istenmeyen etkilere yol açabilir.

Örnek olarak, aşağıdaki kodda bir yönlendirme yapmak veya bir veritabanı sorgusu çalıştırmak istiyoruz. Ancak veritabanı sorgusu, bir yönlendirme komutu olsa bile çalıştırılacaktır:

php<?php
  if ($_GET['test']) {
    header('Location: test.php');
  }
  
  $query = "UPDATE users SET changed=1 WHERE id=1";
  mysqli_query($link, $query); // yönlendirme olsa bile çalışır!
?>

Bu tür sorunlardan kaçınmak için, yönlendirmeden hemen sonra betiğin çalışmasını anında sonlandıracak ve yönlendirmenin hemen gerçekleşmesini sağlayacak olan die fonksiyonu çağrılmalıdır:

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

Kodunuzda herhangi bir istenmeyen etkiyi canlandırın. Ardından bunu die fonksiyonuyla düzeltin.