2010-05-15 11 views
20

संभव डुप्लिकेट पर क्लिक बिना ब्राउज़र बंद करने:
How do I expire a PHP session after 30 minutes?नष्ट या सेट सत्र है जब उपयोगकर्ता लॉगआउट

मैं logout.php में सभी सत्र वर को नष्ट कर रहा हूँ और यह बुला जब उपयोगकर्ता क्लिक लॉगआउट पर, उपयोगकर्ता logout.php पर क्लिक नहीं करता है लेकिन ब्राउज़र को सीधे बंद कर देता है। मैं फिर सत्र कैसे हटा सकता हूं ???

+3

डुप्लिकेट्स: http://stackoverflow.com/questions/2201750/php-destroy-session-on-close-of-main- विन्डो, http://stackoverflow.com/questions/2171821/how-do-i -मेक-माय-साइट-स्वचालित रूप से-साइन-आउट-ए-यूजर-जब-वे-क्लोज-इन-ब्राउजर, http://stackoverflow.com/questions/959655/destroy- सत्र-on- विन्डो- क्लोज़ और अधिक : http://stackoverflow.com/search?q=php+session+browser+close –

+1

आपके उत्तर के लिए धन्यवाद, सत्र समय समाप्ति के लिए वाक्यविन्यास कहां है और कहां है। – nectar

+0

यह भी देखें: http://stackoverflow.com/questions/887919, http://stackoverflow.com/questions/520237, और http://stackoverflow.com/questions/508959 – Gumbo

उत्तर

13

आप सत्र डेटा के लिए एक समय समाप्ति सेट प्रत्येक session_start कॉल के साथ यह परीक्षण करने और सत्र को नष्ट करता है, तो यह समय सीमा समाप्त हो रहा है कर सकते हैं:

session_start(); 
if (!isset($_SESSION['EXPIRES']) || $_SESSION['EXPIRES'] < time()+3600) { 
    session_destroy(); 
    $_SESSION = array(); 
} 
$_SESSION['EXPIRES'] = time() + 3600; 
+2

यह थोड़ा अजीब समाधान है, आपको नहीं लगता? इसके लिए एक अंतर्निहित कार्य है! –

+1

$ _SESSION ['EXPIRES'] .... 'EXPIRES' विशिष्ट है या मैं अपना सत्र var name रख सकता हूं ?? – nectar

+0

@ गुइडोएच: आपको बेहतर ढंग से जांचना चाहिए कि 'session_cache_expire' वास्तव में क्या करता है। – Gumbo

12

आप नहीं कर सकते। हालांकि, सत्र कुकीज़ आमतौर पर एक समाप्ति समय के बिना भेजी जाती है जिसका अर्थ है कि ब्राउज़र बंद होने पर उन्हें हटा दिया जाता है, इसलिए सत्र भी वैसे भी खो जाता है।

+0

क्या इस समस्या से बचने के बारे में कुछ खबरें हैं ? – neoDev

1

सत्र बस सर्वर समाप्त करने के लिए सुन नहीं करता सेट किया जा सकता एक निश्चित अवधि के बाद ग्राहक से। यही कारण है कि दिशा आप में विचार करना चाहता हूँ ...

मार्टिन जब ब्राउज़र विंडो उपलब्ध कराने आप सत्र कुकीज़ समाप्ति समय को संशोधित नहीं बंद कर देता है

3

पीएचपी सत्र स्वचालित रूप से समाप्त करना चाहिए। यदि यह नहीं हो रहा है तो मुझे लगता है कि आपने इसे किसी भी तरीके से संशोधित किया है और हमें सहायता के लिए और विवरण की आवश्यकता होगी।

1

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

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