2011-12-15 21 views
6

मैंने एक PHP कोडित वेबसाइट का एक परीक्षण संस्करण स्थापित किया जो उपयोगकर्ता लॉग इन को संभालने के लिए सत्र का उपयोग करता है। परीक्षण सर्वर पर, सत्र को "क्लोज़" लाइव सर्वर पर कॉपी करने के बाद, ब्राउज़र बंद होने पर सत्र समाप्त हो जाएगा, सत्र ब्राउज़र पर बंद रहता है और उपयोगकर्ता अभी भी पूर्ण सिस्टम रीबूट के बाद अगले दिन भी लॉग इन होता है।session.cookie_lifetime = 0 के दौरान सत्र बंद होने पर सत्र क्यों समाप्त नहीं हो रहा है?

php.ini में

; Lifetime in seconds of cookie or, if 0, until browser is restarted. 
; http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime 
session.cookie_lifetime = 0

का तात्पर्य यह है कि यह कौन सा ब्राउज़र को पुनः प्रारंभ को समाप्त हो जाना चाहिए।

मैं शायद सोचा था कि यह कहीं अधिरोहित किया जा रहा था, लेकिन अगर मैं PHP में session_get_cookie_params print_r मैं

Array 
(
    [lifetime] => 0 
    [path] =>/
    [domain] => 
    [secure] => 
    [httponly] => 
) 

मिल वहाँ कुछ मुझे याद आ रही है?

+0

आप इसे अन्य ब्राउज़र पर कोशिश की थी? आप कौन सा ब्राउज़र उपयोग कर रहे हैं? समाप्ति मूल्य ब्राउज़र पर भेजा जा सकता है, लेकिन ब्राउज़र बंद पर कुकी को हटाने से इंकार कर सकता है। अपनी ब्राउज़र सेटिंग्स को भी जांचें और अन्य ब्राउज़रों पर परीक्षण करें। – mauris

+0

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

+0

इसके अलावा, यह उस ग्राहक द्वारा देखा गया है जिसकी वेबसाइट बनाई गई थी और वह ऐसा नहीं करना चाहता था! –

उत्तर

3

पर और अधिक पढ़ सकते हैं मैं इसे अलेक्जेंडर के उत्कृष्ट उत्तर पर एक टिप्पणी के रूप में जोड़ने जा रहा था, लेकिन यह थोड़ा वर्बोज़ प्राप्त करने जा रहा था।

कब तक कुकी ब्राउज़र पर बनाए रखा है और कितनी देर तक सत्र डेटा एक अनुरोध के अभाव में सर्वर द्वारा बनाए रखा है 2 अलग और स्वतंत्र बातें हैं। HTTP की स्टेटलेस प्रकृति के कारण इससे बचने का कोई तरीका नहीं है - हालांकि कुछ ऐसी चीजें हैं जो आप सुरक्षा दोष के रूप में समझने के लिए कर सकते हैं।

के बाद एक ही सत्र तक पहुँचने के लिए ब्राउज़र के लिए बंद किया जा रहा है और कुछ देरी यह आवश्यकता है कि दोनों सत्र कुकी (जो सिकंदर पहले से ही समझाया गया है) सर्वर के लिए ब्राउज़र द्वारा बनाए रखा जा और सत्र डेटा को बरकरार रखा है करने के लिए ।

आपके द्वारा वर्णित व्यवहार कम मात्रा में अनुरोधों को संभालने वाले सिस्टम पर अधिक स्पष्ट हो सकता है और जहां सत्र हैंडलर सेशन डेटा के टीटीएल को सत्यापित नहीं करता है (मुझे यकीन नहीं है कि डिफ़ॉल्ट हैंडलर क्या करते हैं, या यदि वे बस मान लें कि किसी भी अवांछित सत्र डेटा को वर्तमान माना जाता है)।

आपने 2 सर्वर कॉन्फ़िगर किए गए हैं, विशेष रूप से session.gc_maxlifetime के बारे में कोई विवरण नहीं दिया है।

यदि session.gc_maxlifetime अनुरोधों के बीच समाप्त हो गया है लेकिन सत्र डेटा अभी भी सुलभ है, तो इसका अर्थ यह है कि सत्र हैंडलर केवल उस समय के रूप में मानता है जिस पर सत्र को कचरा संग्रह के लिए योग्य माना जाता है (जो, अर्थात्, यही है विन्यास विकल्प के लिए है)। हालांकि इस मूल्य को टीटीएल के रूप में इलाज के लिए एक मजबूत मामला है। इसे संबोधित करने के लिए आप या तो कचरा संग्रह को अधिक बार चलाने के लिए मजबूर कर सकते हैं और सत्र डेटा को हटा सकते हैं, या एक सत्र हैंडलर का उपयोग कर सकते हैं जो निर्दिष्ट सीमा से पुराने सत्र डेटा को अनदेखा करता है।

कि आप 2 सिस्टम के बीच एक अंतर देखते हैं, session.gc_maxlifetime के लिए अलग-अलग मानों या कचरा संग्रह या यहां तक ​​कि विभिन्न सत्र हैंडलर की आवृत्ति में भिन्नता के कारण हो सकता है।

+0

धन्यवाद। बहुत सूचनाप्रद। session.gc_maxlifetime = 1440 –

4

समस्या यह है कि फ़ायरफ़ॉक्स में "अंतिम सत्र पुनर्स्थापित करें" नामक सुविधा है। अगर कोई नज़दीकी से बचत टैब का उपयोग करता है तो यह वही है। जब ब्राउज़र अंतिम सत्र को पुनर्स्थापित करता है तो सभी सत्र कुकीज़ भी पुनर्स्थापित की जाएंगी :)

तो आपकी सत्र कुकी हमेशा के लिए रह सकती है। आप Firefox session cookies

+0

यह स्पष्ट नहीं करता है कि यह केवल लाइव सर्वर पर यह व्यवहार क्यों दिखाता है, न कि परीक्षण सर्वर, या क्यों IE एक ही व्यवहार दिखाता है। साथ ही, एफएफ बंद करते समय मैं टैब नहीं सहेज रहा हूं, न ही मैं पिछले सत्र को बहाल कर रहा हूं। –

+0

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

+0

प्रमाणीकरण के लिए बेहतर समाधान निश्चित जीवनकाल के साथ कुकी का उपयोग करना है और प्रत्येक अनुरोध पर इसे "स्पर्श" करना है। – lisachenko

8

आप गूगल क्रोम

उपयोग कर रहे हैं यदि आप सेट "जारी रखने के लिए जहां मैंने छोड़ा", क्रोम अपने ब्राउज़िंग डेटा और सत्र कुकी भी संग्रहीत करेगा।

यहां तक ​​कि फेसबुक लॉगिन (बिना "मुझे याद रखें") सत्र बनाए रखा गया है।

अधिक जानकारी के लिए

google chrome setting

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