2016-02-14 5 views
5

अधिक शान से समाप्त हो रही पीएचपी सत्र संभाल करने की कोशिश में, मैं अपने PHP कोड में निम्नलिखित डाला है:क्या जावास्क्रिप्ट अलर्ट पॉपअप PHP सत्र का विस्तार करता है?

$sessionLifeTimeInSeconds = ini_get ("session.gc_maxlifetime"); 
echo '<script type="text/javascript">' . "\n" . 
    ' setTimeout (function() {' . "\n" . 
    ' alert ("Your login session will expire in 3 minutes.");' . 
    "\n" . 
    ' }, ' . ($sessionLifeTimeInSeconds - 180) * 1000 . ');' . "\n" . 
    '</script>' . "\n\n"; 

कौन सा काम करता है। हालांकि, अब मुझे पता है कि जावास्क्रिप्ट अलर्ट पर 'ओके' बटन पर क्लिक करने के बाद और आगे की कोई गतिविधि नहीं होने पर, सत्र समाप्त होने पर सत्र समाप्त नहीं होता है (इस मामले में डिफ़ॉल्ट 24 मिनट) तक पहुंच गया है।

क्या अलर्ट पॉपअप बॉक्स सत्र का विस्तार करना चाहिए? यदि हां, तो क्या इससे बचा जा सकता है और यदि हां, तो कैसे?

मैं उबंटू लिनक्स पर फ़ायरफ़ॉक्स 44.0 का उपयोग कर रहा हूं, अगर यह बिल्कुल प्रासंगिक है।

+0

पॉपअप किसी भी तरह से php सत्र अवधि का विस्तार नहीं होना चाहिए, लेकिन हो सकता है कि अधिक कोड (जिसे आपको हमें प्रदान करना चाहिए) उस हद तक। –

+0

नहीं, कोई नहीं है। PHP कोड में यह एकमात्र परिवर्तन है। इस सरल जावास्क्रिप्ट स्निपेट सत्रों को सम्मिलित करने से पहले 24 मिनट (PHP डिफ़ॉल्ट) के बाद समाप्त हो गया, और अब वे नहीं करते हैं। कोड में कोई अन्य बदलाव नहीं किए गए हैं, न ही कोई अन्य बातचीत या ग्राहक/सर्वर अनुरोध किए गए हैं। इसलिए सवाल, क्योंकि मुझे नहीं लगता था कि ऐसा होना चाहिए। –

+0

अलर्ट पॉपअप क्लाइंट साइड है। सर्वर के लिए कोई अनुरोध नहीं किया गया है। इस प्रकार PHP सत्र समाप्त नहीं किया गया है। जब आप इसे पूरा करना चाहते हैं तो आपको साइट को फिर से लोड करना होगा। – Fuzzyma

उत्तर

0

पॉपअप बॉक्स सत्र का विस्तार नहीं करता है क्योंकि सत्र 24 मिनट के लिए सर्वर द्वारा धारण किया जाता है और केवल सर्वर के साथ बातचीत होने पर ही विस्तारित होता है। अपने जावास्क्रिप्ट समारोह में जावास्क्रिप्ट के माध्यम से एक सर्वर कॉल करने के लिए

कोशिश जड़ तक php सत्र एक AJAX कॉल विस्तार करने के लिए, उदाहरण के लिए:

$sessionLifeTimeInSeconds = ini_get ("session.gc_maxlifetime"); 
echo '<script type="text/javascript">' . "\n" . 
    ' setTimeout (function() {' . "\n" . 
    ' alert ("Your login session will expire in 3 minutes.");' . 
    ' xhttp.open("GET", "/", true);' . 
    ' xhttp.send()' . 
    "\n" . 
    ' }, ' . ($sessionLifeTimeInSeconds - 180) * 1000 . ');' . "\n" . 
    '</script>' . "\n\n"; 
संबंधित मुद्दे