मेरे पास एक ऐसी स्थिति है जहां मैं एक फॉर्म को संसाधित करता हूं, यदि सत्र चर में समस्याएं और त्रुटि संदेश हैं और फिर हेडर रीडायरेक्ट के बाद गूंज बाहर है। सत्र त्रुटि संदेश को साफ़ करने के लिए, मैं इसे शून्य पर सेट करता हूं; हालाँकि, ऐसा करने से यह बिल्कुल भी प्रतिध्वनित नहीं होता है। मेरा कोड काफी लंबा है लेकिन यहां एक उदाहरण है जो व्यवहार को प्रदर्शित करता है।

पूरी फाइल:

<?php
session_start();

if($_REQUEST['set_session'] == 'true')
{

    $_SESSION['error_message'] = '<p>Should be this.</p>';

    header('Location: session_test.php');
}
?>
<html>
<head>
</head>
<body>

<?
echo $_SESSION['error_message'];

$_SESSION['error_message'] = '<p>Should not be this.</p>';

?>

<p><a href="session_test.php?set_session=true">Test</a></p>
</body>

क्या कोई समझा सकता है कि मुझे "यह होना चाहिए" के बजाय "यह नहीं होना चाहिए" क्यों मिलता है? और मुझे मनचाहा परिणाम कैसे मिल सकता है।

2
matfr 19 मार्च 2011, 14:12
शायद असंबंधित, लेकिन क्या आप कहीं भी $error_message सेट कर रहे हैं?
 – 
Felix Kling
19 मार्च 2011, 14:16
आप $error_message प्रिंट कर रहे हैं - लेकिन इस चर को इसका मूल्य कहां मिलता है?
 – 
Andreas
19 मार्च 2011, 14:17
धन्यवाद फेलिक्स क्लिंग और एंड्रियास - आप दोनों सही थे, कि यह वैसा ही होना चाहिए जैसा अभी है। धन्यवाद।
 – 
matfr
19 मार्च 2011, 14:42

2 जवाब

सबसे बढ़िया उत्तर

मुझे लगता है कि यदि आप हेडर के बाद अपनी स्क्रिप्ट से बाहर निकलते हैं तो आपकी परेशानी ठीक हो जानी चाहिए। इसे इस्तेमाल करो:

header('Location: session_test.php');
exit();

हेडर पर कॉल करने के बाद भी स्क्रिप्ट चलती रहती है, भले ही ब्राउजर दूसरे पेज पर जाए। इसलिए जब इस पृष्ठ में प्रतिध्वनि दिखाई नहीं दे रही है, तब भी त्रुटि संदेश बदल गया है।

3
Nanne 19 मार्च 2011, 14:18
धन्यवाद नैन - बस मुझे जो चाहिए था।
 – 
matfr
19 मार्च 2011, 14:43

header रीडायरेक्ट के बाद, आपको exit करना होगा, अन्यथा स्क्रिप्ट निष्पादित होती रहती है।

0
Andrei Serdeliuc ॐ 19 मार्च 2011, 14:19
धन्यवाद आंद्रेई, अब यह बहुत अच्छा है।
 – 
matfr
19 मार्च 2011, 14:43