2009-08-25 12 views
11

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

मेरे पास है कुछ उदाहरण पाए गए जहां उन्होंने सत्र समाप्त होने के लिए समय निकाला है, लेकिन मैं चाहता हूं कि इसे लॉग आउट करने के दौरान उपयोगकर्ता द्वारा लॉग आउट ईवेंट पर ही समाप्त हो जाना चाहिए।

मैं यह कैसे कर सकता हूं ??

संपादित करें:

session_cache_expire(0); 
session_start(); 

इस लिखने तरह से ऐसा करने के लिए है?

उत्तर

24

एक समाधान है कि अक्सर इस स्थिति में, प्रयोग किया जाता है, के लिए:

  • एक नहीं बहुत लंबा सत्र की अवधि है: यदि उपयोगकर्ता सक्रिय नहीं है यह समाप्त हो जाएगा (है कि अभी जिस तरह से यह काम करता है - और यदि आपके पास बहुत सारे उपयोगकर्ता हैं तो
  • उपयोगकर्ता लॉग इन करते समय, आप एक कुकी सेट करते हैं जिसमें उसे पहचानने के लिए आवश्यक है
  • यदि वह साइट पर वापस आ गया है (कुकी के साथ, और एक सक्रिय सत्र के बिना), आप उसी कुकी में निहित सूचनाओं का उपयोग उसमें स्वत: लॉग इन करने के लिए करते हैं, उसी समय सत्र को दोबारा बनाते हैं।

इस तरह:

  • आप कोई अच्छा कारण
  • आप मानक तरीका सत्र काम

रखने के साथ सत्र के हजारों "सक्रिय" की जरूरत नहीं है और आपके पास कम से कम उपयोगकर्ता के दृष्टिकोण से "कभी भी बाहर नहीं जा रहा" का लाभ।

यह भी ध्यान दें कि "सामान्य" सत्रों के साथ, जब उपयोगकर्ता अपने ब्राउज़र को बंद करता है तो सत्र आईडी युक्त कुकी हटा दी जाएगी - इसलिए, वह डिस्कनेक्ट हो जाएगा, इससे कोई फर्क नहीं पड़ता कि सत्र का जीवनकाल कितना समय है।
समाधान मेरा प्रस्ताव के साथ, आप एक है जो सेट कब तक कुकी, उपयोगकर्ता के कंप्यूटर ;-)


इसका मतलब है में रहना चाहिए, हालांकि, कि जब कोई उपयोगकर्ता मैन्युअल रूप से लॉग-आउट, आप कर रहे हैं अपने सत्र और कुकी दोनों को निश्चित रूप से हटाने के लिए - इसलिए वह तुरंत पुनः ऑटो-लॉग-इन नहीं है।


बेशक , तुम क्या आप कुकी में सेट के बारे में सावधान रहना होगा: एक कुकी काफी सुरक्षित नहीं है, तो उदाहरण ;-)


के लिए उस में एक पासवर्ड की दुकान नहीं है, असल में, चीजों को करने का यह तरीका यह है कि "मुझे याद रखें" सुविधा अक्सर काम करती है; सिवाय इसके कि, आपके उपयोगकर्ताओं को "मुझे याद रखें" को सक्रिय करने के लिए चेकबॉक्स की जांच नहीं करनी होगी ;-)


यदि आपके पास उस तरह की चीजें विकसित करने का समय नहीं है, तो एक बहुत तेज़ और गंदा तरीका है अपने सभी पृष्ठों पर कुछ अजाक्स अनुरोध का उपयोग करने के लिए, जो सर्वर पर एक PHP पृष्ठ "पिंग" करेगा - यह सत्र को सक्रिय रखेगा (लेकिन यह चीजों को करने का एक अच्छा तरीका नहीं है: आपके पास अभी भी बहुत सारे सत्र होंगे सर्वर पर, आपके पास बहुत बेकार अनुरोध होगा ... और यह तब तक काम करेगा जब तक उपयोगकर्ता अपना ब्राउज़र बंद नहीं करता)।

+0

मैं इसे करने के लिए श्रेणीबद्ध उपयोगकर्ता नाम और एक यादृच्छिक संख्या के साथ एक कुकी सेट और उसके बाद है मैंने इसे डेटाबेस में संग्रहीत किया है। जब एक पृष्ठ कहा जाता है तो मैं सिस्टम कुकी की जांच करता हूं और डेटाबेस में किसी के साथ मेल खाता हूं यदि दोनों मैचों में मैं व्यक्ति को अन्यथा लॉग इन के रूप में प्रदर्शित करता हूं। और जब कोई व्यक्ति लॉग आउट करता है तो मैं कुकी को शून्य पर सेट करता हूं। क्या यह सही तरीका है ??? और यह सुरक्षित है ??? – developer

+0

मेरे लिए ठीक लगता है, कम से कम - यह कभी भी "सही सुरक्षा" नहीं होगा, क्योंकि लड़के के कंप्यूटर का उपयोग करने वाले किसी भी व्यक्ति को ऑटो-लॉग-ऑन किया जाएगा, लेकिन यह पर्याप्त होना चाहिए, मुझे लगता है :-) –

+0

या मैं सुरक्षा को समझता हूं मुद्दा। खैर धन्यवाद मार्टिन :-) – developer

0

क्या आप परीक्षण करते समय अपनी कुकीज़ हटाते हैं? कुकीज़ सक्षम हैं? क्या आप अपने कोड में कहीं सत्र को नष्ट करते हैं?

इसके अलावा, मेरा जवाब किसी अन्य पोस्ट पर देखें: Quick question about sessions in PHP जो बताता है कि साइन इन कैसे रहें। बस एक क्रोनबॉज/शेड्यूल्ड कार्य न करें यदि आप हमेशा के लिए लॉग इन रहना चाहते हैं।

2

आप अकेले PHP आंतरिक सत्र हैंडलिंग के साथ ऐसा नहीं कर सकते हैं। PHP हमेशा एक सत्र-कुकी में सत्र आईडी भेज देगा जो उपयोगकर्ता समाप्त होने पर समाप्त हो जाएगा जब उपयोगकर्ता अपने ब्राउज़र को बंद कर देता है। कुछ प्रकार के ऑटो-लॉगिन प्राप्त करने के लिए आपको कुछ साथ कोड की आवश्यकता होगी जो उपयोगकर्ता के ब्राउज़र पर लंबी-स्थायी कुकी सेट करता है और इन कुकीज़ की पहचान और कुकीज़ मान और संबंधित उपयोगकर्ता खाते के बीच मैपिंग को संभालता है।

कृपया ध्यान दें कि यह सुरक्षा समस्याओं को बहुत प्रभावित करता है ताकि आपको बहुत सी चीजों का ख्याल रखना पड़े। कैसे एक संभव ऑटो के लिए लॉग इन सुविधा काम कर रहा हो सकता है कृपया पर निम्न को पढ़ें:

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