2009-03-04 40 views
36

कुछ प्रोसेसिंग करने के बाद, मैं उपयोगकर्ता इनपुट में कुकी मान सेट करना चाहता हूं और फिर उन्हें एक नए पृष्ठ पर रीडायरेक्ट करना चाहता हूं। हालांकि, कुकी सेट नहीं हो रही है। अगर मैं रीडायरेक्ट पर टिप्पणी करता हूं, तो कुकी सफलतापूर्वक सेट हो जाती है। मुझे लगता है कि यह किसी प्रकार का हेडर मुद्दा है। इस स्थिति के लिए सबसे अच्छा कामकाज क्या है?मैं कुकी कैसे सेट कर सकता हूं और फिर PHP में रीडायरेक्ट कर सकता हूं?

if($form_submitted) { 
    ... 
    setcookie('type_id', $new_type_id, time() + 60*60*24*30); 
    header("Location: $url"); 
    exit; 
} 

ध्यान दें कि setcookie रिटर्न या तो मामले में true और मैं कोई त्रुटि/चेतावनी/नोटिस मिलता है।

संपादित करें: यदि कुकी सेट है मैं यूनिक्स/अपाचे/MySQL/पीएचपी

+1

आप हेडर के बाद कुकी सेटिंग्स का प्रयास किया था()? –

+0

sikx - अगर मैं शीर्षलेख() पहले उपयोग करता हूं तो कुकी सेट नहीं होती है। – Wickethewok

+0

मुझे एक समस्या थी जहां 'स्थान: http: // domain.com/asd' कुकी को सहेज नहीं पाएगा। 'स्थान:/asd' करने से यह मेरे लिए हल हो गया। – Znarkus

उत्तर

65

आप मानव यूआरएल या उप-फ़ोल्डरों (www.domain.com/path1/path2/) की तरह है, तो आप कुकी पथ को ही नहीं, मौजूदा सभी पथों के लिए काम करने के लिए सेट करना होगा /।

if($form_submitted) { 
    ... 
    setcookie('type_id', $new_type_id, time() + 60*60*24*30, '/'); 
    header("Location: $url"); 
    exit; 
} 
पीएचपी पुस्तिका से

:

सर्वर जिसमें कुकी पर उपलब्ध हो जाएगा पर पथ। यदि '/' पर सेट किया गया है, तो कुकी पूरे डोमेन के भीतर उपलब्ध होगी। यदि '/ foo /' पर सेट किया गया है, तो कुकी केवल /foo/निर्देशिका और सभी उप-निर्देशिका जैसे /foo/bar/डोमेन के भीतर उपलब्ध होगी। डिफ़ॉल्ट मूल्य वर्तमान निर्देशिका कि कुकी में स्थापित किया जा रहा है।

+4

फिर आपको @QuestionMark से पूछा जाना चाहिए था। – Xeoncross

+3

बुरा थोड़ा स्लैश – petermeissner

2

उपयोग कर रहा हूँ कैसे आप परीक्षण कर रहे हैं? कुकीज़ सेट होने के बाद अगले पृष्ठ पर उपलब्ध हैं।

सामान्य गलतियां:

कुकीज़ एक पृष्ठ है कि कुकी के लिए दिखाई देना चाहिए के अगले लदान तक दिखाई नहीं बन जाएगा। यह जांचने के लिए कि कुकी सफलतापूर्वक सेट की गई है, कुकी समाप्त होने से पहले अगले लोडिंग पेज पर कुकी की जांच करें। समाप्ति समय समाप्ति पैरामीटर के माध्यम से सेट किया गया है। कुकीज के अस्तित्व को डीबग करने का एक अच्छा तरीका बस print_r ($ _ कुकी) को कॉल करना है;

+0

मैं जांच रहा था कि कुकी ब्राउज़र प्लगइन के माध्यम से सेट की गई थी या नहीं। यहां तक ​​कि यदि मैं फिर किसी अन्य पृष्ठ पर नेविगेट करता हूं और अपनी कुकीज़ जांचता हूं, तो यह सेट नहीं होता है। – Wickethewok

4

मुझे लगता है कि आप आईआईएस चला रहे हैं? एक ही अनुरोध में एक कुकी और एक स्थान शीर्षलेख दोनों सेट करने का प्रयास करते समय 7 से कम आईआईएस संस्करणों के साथ एक बग पता है।

http://support.microsoft.com/kb/q176113/

+1

मैं आईआईएस का उपयोग कर रहा हूं और इस सटीक समस्या को दबाता हूं। क्या आप एक .php स्क्रिप्ट में एक वर्कअराउंड जानते हैं? –

2

मैं ताज़ा हैडर में कुछ देरी का उपयोग करके इस समस्या को हल करने में सक्षम था। हमने हेडर सेट किया है (जिसे सेटक्यूकी की तरह आउटपुट करने वाले किसी भी तरीके से पहले किया जाना चाहिए), और फिर कुकीज़ सेट करें। मैंने एक संदेश जोड़ा ताकि उपयोगकर्ता को उन जोड़े सेकंड के लिए एक खाली स्क्रीन दिखाई न दे।

header("refresh: 2; url=$url"); 
    setcookie('type_id', $new_type_id, time() + 60*60*24*30, '/'); 
    echo "Processing, please wait..."; 
+2

यह गूंज है जो इसे काम करने का कारण बनता है, हेडर नहीं। आप ब्राउज़र पर प्रतिक्रिया भेज रहे हैं, जिससे कुकी को भी भेजा जा सकता है। बस कुकी को सेट करना, फिर रीडायरेक्ट करना ब्राउज़र में 302 स्थिति नहीं करता है, यह केवल प्रोसेसिंग सर्वर पक्ष को स्थानांतरित करता है, इसलिए क्लाइंट कुकी के बारे में कभी नहीं जानता। – frumbert

+0

नोट और अपवित्र! – atonyc

+0

@frumbert "बस कुकी को सेट करना फिर रीडायरेक्ट करना ब्राउज़र पर 302 स्थिति नहीं करता है" - हाँ यह करता है। "यह सिर्फ सर्वर पक्ष प्रसंस्करण स्थानांतरित करता है" - नहीं, यह नहीं करता है। (?) इस प्रश्न में पहले से ही एक स्वीकार्य उत्तर है जो केवल वही करता है (जो काम करता है)। – MrWhite

0

शीर्षक में एक सापेक्ष URL का उपयोग करें:

@Header("Location: orders_9090_1.php"); 
+0

दोस्त, इसे हटा दें @ कृपया, इसे कोडिंग से प्रतिबंधित होना चाहिए। यदि कोई फ़ंक्शन आपको एक संदेश बताता है, इसे पढ़ें, इसे समझें, इसे हल करें। "इसे छुपाएं" नहीं। – Runerod

संबंधित मुद्दे

 संबंधित मुद्दे