Dərhal Redirect PHP-də
header funksiyası vasitəsilə edilən redirect
bu funksiyanın çağırıldığı anda baş vermir.
Axı PHP özü redirecti həyata keçirmir,
yalnız brauzerə uyğun HTTP başlığını göndərir.
Bu o deməkdir ki, redirect yalnız o zaman baş verəcək ki, PHP bütün skripti sonuna qədər icra etsin. Buna görə müxtəlif parazit effektlər baş verə bilər.
Nümunə üçün, aşağıdakı kodda biz ya redirect etmək, ya da bazaya sorğu etmək istəyirik. Lakin bazaya sorğu hətta redirect üçün əmr olunsa belə icra olunacaq:
<?php
if ($_GET['test']) {
header('Location: test.php');
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query); // redirect zamanı belə icra olunacaq!
?>
Bu kimi problemlərin qarşısını almaq üçün
redirectdən dərhal sonra skripti dərhal dayandıran
die funksiyasını çağırmaq lazımdır,
beləliklə redirect dərhal baş verəcək:
<?php
if ($_GET['test']) {
header('Location: test.php');
die();
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query);
?>
Kodunuzda hansısa bir parazit effekti
təkrar edin. Sonra onu die funksiyası
vasitəsilə düzəldin.