PHP-da Darhol Redirect
header funksiyasi yordamida amalga oshirilgan
redirect, ushbu funksiya chaqirilgan paytda
sodir bo'lmaydi. Chunki PHP o'zi redirectni
amalga oshirmaydi, faqat browserga mos
HTTP sarlavhasini yuboradi.
Bu shuni anglatadiki, redirect faqat PHP skriptni oxirigacha bajarib bo'lgachgina sodir bo'ladi. Shu sababli turli xil parazit effektlar yuzaga kelishi mumkin.
Misol uchun, quyidagi kodda biz redirect yoki bazaga so'rov amalga oshirishni xohlaymiz. Lekin, redirect buyrug'i bo'lsa ham, bazaga so'rov amalga oshiriladi:
<?php
if ($_GET['test']) {
header('Location: test.php');
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query); // redirect holatida ham bajariladi!
?>
Bunday muammolarning oldini olish uchun
redirectdan so'ng darhol die funksiyasini
chaqirish kerak, bu skript bajarilishini
darhol to'xtatadi va redirect darhol sodir bo'ladi:
<?php
if ($_GET['test']) {
header('Location: test.php');
die();
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query);
?>
O'zingizning kodizingizda qandaydir parazit
effektni namoyish qiling. Keyin uni
die funksiyasi yordamida tuzating.