PHP में तत्काल रीडायरेक्ट

header फ़ंक्शन का उपयोग करके किया गया रीडायरेक्ट इस फ़ंक्शन के कॉल के समय नहीं होता है। आखिरकार PHP स्वयं रीडायरेक्ट नहीं करता, बल्कि केवल ब्राउज़र में संबंधित HTTP हेडर भेजता है।

इसका मतलब है कि रीडायरेक्ट तभी होगा जब PHP पूरी स्क्रिप्ट को अंत तक निष्पादित कर लेगा। इसके कारण विभिन्न अवांछित प्रभाव हो सकते हैं।

उदाहरण के लिए, निम्नलिखित कोड में हम चाहते हैं कि या तो रीडायरेक्ट हो, या डेटाबेस को क्वेरी भेजी जाए। लेकिन डेटाबेस क्वेरी तब भी निष्पादित होगी जब रीडायरेक्ट का आदेश दिया गया था:

php<?php
  if ($_GET['test']) {
    header('Location: test.php');
  }
  
  $query = "UPDATE users SET changed=1 WHERE id=1";
  mysqli_query($link, $query); // रीडायरेक्ट की स्थिति में भी निष्पादित होगा!
?>

इस तरह की समस्याओं से बचने के लिए रीडायरेक्ट के तुरंत बाद die फ़ंक्शन को कॉल करने की आवश्यकता होती है, जो तुरंत स्क्रिप्ट का निष्पादन समाप्त कर देगी और रीडायरेक्ट तुरंत हो जाएगा:

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

अपने कोड में कोई अवांछित प्रभाव पैदा करें। फिर die फ़ंक्शन का उपयोग करके इसे ठीक करें।