2011-11-01 25 views
19

मुझे अपने केकेपीएचपी आवेदन के साथ समस्याएं हैं। ऐसा लगता है कि केवल आईई में ही है, और केवल कुछ कंप्यूटरों पर ही। यह उन कंप्यूटरों पर सुसंगत है जहां यह हो रहा है।केकेपीएचपी कुकी/सत्र की समस्याएं

जारी करना एक: उपयोगकर्ता में और पेज https://example.com/users/view पर लॉग ऑन है और क्लिक्स प्रस्थान करें। उपयोगकर्ता को http://example.com पर रीडायरेक्ट किया गया है और जब तक उपयोगकर्ता किसी अन्य https पृष्ठ पर नहीं जाता है तब तक लॉग आउट होता है और वे अभी भी लॉग इन होते हैं। वे जितनी बार चाहें लॉग आउट क्लिक कर सकते हैं लेकिन वे हमेशा https पर लॉग इन होते हैं और केवल लॉग ऑन हो जाते हैं एचटीटीपी।

अंक दो: उपयोगकर्ता लॉग https://example.com/users/signin में में वे http://example.com पर पुनः निर्देशित कर रहे हैं और अब दिखाई में लॉग इन करने उपयोगकर्ता https://example.com/admin/slides को जाता है और अभी तक यह पता नहीं है, लेकिन अब लॉग आउट किया जाता है, (किसी अन्य पृष्ठ पर क्लिक। या बस अपने वर्तमान पृष्ठ को रीफ्रेश करना) उन्हें फिर से लॉग इन करने के लिए कहेंगे।

मुझे नहीं पता कि क्या हो रहा है। मैंने इन समान मुद्दों पर वर्णित समाधानों को पढ़ और कोशिश की है: Session not saving when moving from ssl to non-ssl और Cookie not renewing/overwriting in IE लेकिन मुझे अभी भी वही समस्याएं हैं।

केवल सुराग मैं अब तक देखा है, (और यह कुछ भी अर्थ है कि अगर मैं नहीं जानता) है जब मैं (HTTP पृष्ठ हमेशा केवल $ this-> सत्र-> पढ़ पर दोनों $_SESSION और $this->Session->read() डिबग) एक रिटर्न मूल्य। एचटीटीपीएस पृष्ठों पर कुछ हमेशा के लिए एक ही मूल्य लौटाते हैं, अन्य लोग केवल $-> सत्र-> पढ़ते हैं() के लिए एक मान वापस कर देते हैं।

उदाहरण के लिए, http://example.com और https://example.com/users $ _SESSION, https://example.com/carts को कभी भी $ _SESSION नहीं देखता है। मुझे यकीन नहीं है, लेकिन मैं सोच रहा हूं कि शायद सुरक्षित पृष्ठ इसे देख रहे हैं और कुछ लोग शायद कुछ गलत नहीं कर सकते हैं, हालांकि जब मैं कोड का निरीक्षण करता हूं तो मुझे कोई फर्क नहीं पड़ता कि यह सुझाव देगा कि कोई क्यों करता है और कोई नहीं करता है ' टी।

इसके अलावा, अगर मैं एपकंट्रोलर में पहले फ़िल्टर में $this->Session->destroy() जोड़ता हूं, तो सभी पेज भी HTTP $ _SESSION देख सकते हैं। मैं वास्तव में अपने आवेदन में $ _SESSION का उपयोग नहीं कर रहा हूं, मैंने सोचा कि यह गलत क्या है इसके लिए एक सुराग हो सकता है।


अद्यतन

मैं गुस्ताव बेरट्रम की सलाह tooked और उपयोगकर्ता एजेंट स्ट्रिंग को देखा। मैंने उस कंप्यूटर पर आईई के साथ उपयोगकर्ता एजेंट स्ट्रिंग की तुलना की जो उस कंप्यूटर पर आईई को समस्या थी जिसमें समस्या नहीं थी। वे उपयोगकर्ता एजेंट स्ट्रिंग में "Google क्रोम फ्रेम" होने वाली समस्याओं को छोड़कर वही थे। मैंने उस कंप्यूटर से Google क्रोम फ्रेम को अनइंस्टॉल किया, पुनः प्रारंभ किया, फिर कोशिश की और समस्या हल हो गई।

यदि यह सही कारण है, तो सरल समाधान उपयोगकर्ताओं को क्रोम फ्रेम को अनइंस्टॉल करना होगा। हालांकि मुझे आश्चर्य है कि अगर उसके आसपास कोई काम है तो उन्हें क्रोम फ्रेम स्थापित करने और अभी भी काम करने की अनुमति मिल जाएगी।

+0

(मुझे लगता है कि आपने सामान्य कैशिंग संदिग्धों को खारिज कर दिया है।) IE के कौन से संस्करण हैं? पेज हेडर (कैश-कंट्रोल, आदि) के साथ झुकाव - http://support.microsoft.com/kb/234067 देखें) कोई प्रभाव पड़ता है? – OpenSorceress

+0

सत्र सामग्री scrambled या कुछ भी है? सुरक्षा विकल्प हो सकते हैं .. – Dunhamzzz

+0

क्या पृष्ठ में कोई फ़्लैश सामग्री है? क्या आपने सत्र से सुरक्षा को उच्च से कम करने की कोशिश की है? – binoy

उत्तर

16

कोशिश जोड़ने अपने core.php फ़ाइल में निम्नलिखित:

Configure::write('Session.checkAgent', false); 
Configure::write('Session.ini',array('session.cookie_secure' => false, 'session.referer_check' => false)); 

ये पैरामीटर भी गूगल क्रोम फ्रेम के माध्यम से लागू करने के लिए कुकी के लिए मजबूर करना चाहिए। यह कुकीज़ और http और https पर बने रहने की अनुमति देने के लिए PHP और केकपीएचपी दोनों सेटिंग्स सेट करेगा।

+0

सोचा था कि मैं उल्लेख करता हूं कि ये केकेपीएचपी 2.0 पैरामीटर हैं। वे 1.3 में थोड़ा अलग हो सकते हैं, लेकिन आपको लॉग इन करते समय http और https के बीच नेविगेट करने की अनुमति देनी चाहिए। –

+0

यह 1.3 के समान वाक्यविन्यास जैसा दिखता है, 1.3 में कोई त्रुटि नहीं है। :) क्रोम फ्रेम स्थापित होने पर भी यह समस्या ठीक करने लगती है। क्या आपको पता है कि केक पहली बार एजेंट की जांच क्यों कर रहा था? खेद है कि मैंने पहले से ही बक्षीस दिया है जब मैंने किया था। –

+0

यह एक सुरक्षा उपाय है। मुझे लगता है कि डिफ़ॉल्ट रूप से, यह एक सुरक्षित कुकी केवल सुरक्षित कनेक्शन में मान्य होना चाहता है। यदि आप http पर जाते हैं, तो यह अब सुरक्षित नहीं है। तो, यहां, हम मूल रूप से इसे बंद कर रहे हैं। बक्षीस पर कोई चिंता नहीं। मैं खुश हूं कि आपका यह चलने लगा! –

6

मेरा सुझाव यह है कि कुकीज़ को क्या हो रहा है यह देखने के लिए आप पैकेट को सीधे देखें।

अपनी क्लाइंट मशीन पर Wireshark इंस्टॉल करें और दूरस्थ वेब सर्वर से कनेक्ट करें। (Wireshark स्थानीयहोस्ट यातायात को अनदेखा कर देगा।)

मेरा संदेह यह है कि आपकी कुकीज़ या तो उलझ रही है (मुझे एक बार PHP द्वारा उलझाई गई कुछ कुकीज़ थीं!) या वे अटक गए हैं (जो आईई की गलती होगी)। किसी भी तरह से, आपको क्या गलत हो रहा है इसके बारे में अधिक जानकारी होगी।

अंतिम उपाय के रूप में, आईई के अपमानजनक/असमर्थित संस्करण के लिए कोड में उपयोगकर्ता-एजेंट स्ट्रिंग की जांच करें, और लोगों को अपग्रेड करने का आग्रह करें।

+0

मैं आपको आपके सुझाव के बाद से बक्षीस दे रहा हूं उपयोगकर्ता एजेंट को देखते हुए मुझे क्रोम फ्रेम समस्या का पता चला। मैं अभी भी स्थापित क्रोम फ्रेम के साथ काम करने के लिए एक तरीका पता लगाना चाहूंगा। –

+0

स्पष्ट रूप से आप [क्रोम रेंडरिंग इंजन का उपयोग करने के लिए Google क्रोम के साथ आईई को मजबूर कर सकते हैं] (http://www.zdnet.com/blog/google/google-chrome-frame-hijacks-ie-and-is- अब माना स्थिर/2485)। अगर यह आपको खुशी नहीं देता है, तो यह बग रिपोर्ट समय हो सकता है। –

-1

क्या आपने सुनिश्चित किया है कि आपके पास php बंद करने के बाद कोई रिक्त स्थान या न्यूलाइन नहीं है?> टैग? शायद यह पहली चीज थी जिसे आपने चेक किया था, लेकिन अनुभव से मुझे पता है कि बुरी तरह से बंद PHP टैग php सत्र हैंडलिंग के साथ sporadic समस्याओं का कारण बनता है।

0

इसे अपने ऐपकंट्रोलर के पहले फ़िल्टर में डालने का प्रयास करें और देखें कि यह कुछ भी करता है या नहीं। मुझे लगता है कि कुकी सेटिंग्स कॉन्फ़िगर नहीं की गई हैं जैसे आपको चाहिए। अधिक जानकारी के लिए See here

function beforeFilter() { 
    $this->Cookie->domain = '.example.com'; 
    $this->Cookie->secure = false; 
}