2012-04-19 12 views
6

द्वारा हेडर में डुप्लिकेट "सेट-कुकी: सीआई-सत्र" फ़ील्ड प्रत्येक बार $-- session-> set_userdata() या $ this-> session-> set_flashdata() का उपयोग मेरे नियंत्रक में किया जाता है, एक और समान "सेट-कुकी: ci_session = ..." सर्वर द्वारा भेजे गए http शीर्षलेख में जोड़ा जाता है।कोडिनेटर

http शीर्षलेख में एक ही कुकी नाम के साथ एकाधिक सेट-कुकी फ़ील्ड, rfc6265 के अनुसार ठीक नहीं है।

तो क्या कोडिनेटर सत्रों का उपयोग करने के बिना कई समान "सेट-कुकी:" एस बनाने के लिए कोई तरीका है?

उत्तर

5

जांच https://github.com/EllisLab/CodeIgniter/pull/1780

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

यह एक समस्या है क्योंकि यदि सत्र में बहुत से मूल्य लिखे गए हैं, तो HTTP शीर्षलेख काफी बड़े हो सकते हैं, और कुछ वेब सर्वर प्रतिक्रिया को अस्वीकार कर देंगे। (http://wiki.nginx.org/HttpProxyModule#proxy_buffer_size देखें)

समाधान पृष्ठ सामग्री को आउटपुट करने से पहले अन्य सभी शीर्षलेख भेजे जाने के बाद ही एक बार सही 'sess_save()' चलाने के लिए है।

0

मेरा मानना ​​है कि आप तो यह केवल एक सुझाव इन पंक्तियों के साथ कुछ करने की कोशिश करना है मैं इस कोड का परीक्षण नहीं किया $this->session->set_userdata(); को एक सरणी पारित कर सकते हैं (मैं HTTP हेडर सत्यापित करने के लिए कर्ल का उपयोग किया है):

$data = array(
    'whatever' => 'somevalue', 
    'youget' => 'theidea' 
); 

$this->session->set_userdata($data); 

एनबी: जब मैं कहता हूँ मैं कोड का परीक्षण नहीं किया है .. मैं इस कोड का इस्तेमाल किया है और मैं यह काम करता है पता है, मेरा मतलब है मैं परीक्षण किया नहीं किया है, तो इसे भेजा हेडर की राशि कम हो जाएगा।

+0

समस्या यह है कि कोडिग्निटर केवल पृष्ठ का अनुरोध करने के लिए पहली सत्र कुकी बनाता है, इसलिए केवल एक $ this-> session-> set_userdata() कॉल के साथ दो "सेट-कुकी: ci_session = होगा। .. "रों। – mathulus

+0

व्यक्तिगत रूप से, और कोडइग्निटर का उपयोग करके वास्तविक परियोजनाओं के अनुभव के साथ, मैं सीआई सत्र का उपयोग नहीं करता हूं। मैं देशी PHP सत्र और देशी PHP सत्र फ़ंक्शंस का उपयोग करना पसंद करता हूं। – Dale

0

मेरे मामले में, त्रुटि ब्राउज़र (क्रोम) में है। यह 2 कुकी संग्रहीत करता है और दोनों सर्वर पर भेजता है, यह सर्वर हर समय नया सत्र बनाता है। मैंने ब्राउज़र में कुकीज़ साफ़ करके इसे ठीक किया है। आशा है कि यह किसी की मदद करे। :)