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
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
if ($_GET['test']) {
header('Location: test.php');
die();
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query);
?>
Kodunuzda herhangi bir istenmeyen etkiyi
canlandırın. Ardından bunu die
fonksiyonuyla düzeltin.