PHP में तत्काल रीडायरेक्ट
header फ़ंक्शन का उपयोग करके किया गया रीडायरेक्ट
इस फ़ंक्शन के कॉल के समय नहीं होता है। आखिरकार PHP स्वयं
रीडायरेक्ट नहीं करता, बल्कि केवल ब्राउज़र में
संबंधित HTTP हेडर भेजता है।
इसका मतलब है कि रीडायरेक्ट तभी होगा जब PHP पूरी स्क्रिप्ट को अंत तक निष्पादित कर लेगा। इसके कारण विभिन्न अवांछित प्रभाव हो सकते हैं।
उदाहरण के लिए, निम्नलिखित कोड में हम चाहते हैं कि या तो रीडायरेक्ट हो, या डेटाबेस को क्वेरी भेजी जाए। लेकिन डेटाबेस क्वेरी तब भी निष्पादित होगी जब रीडायरेक्ट का आदेश दिया गया था:
<?php
if ($_GET['test']) {
header('Location: test.php');
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query); // रीडायरेक्ट की स्थिति में भी निष्पादित होगा!
?>
इस तरह की समस्याओं से बचने के लिए
रीडायरेक्ट के तुरंत बाद
die फ़ंक्शन को कॉल करने की आवश्यकता होती है,
जो तुरंत स्क्रिप्ट का निष्पादन समाप्त कर देगी
और रीडायरेक्ट तुरंत हो जाएगा:
<?php
if ($_GET['test']) {
header('Location: test.php');
die();
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query);
?>
अपने कोड में कोई अवांछित प्रभाव पैदा करें।
फिर die फ़ंक्शन का उपयोग करके इसे ठीक करें।