में सत्र को नष्ट करते समय त्रुटि मुझे PHP (संस्करण 5.2.10) में सत्र हैंडलिंग में समस्या हो रही है। मैं लॉगिन, लॉगआउट और मान्य सत्रों के लिए नीचे उल्लिखित कार्यों का उपयोग कर रहा हूं।PHP
login() { session_set_cookie_params(0); session_start(); session_regenerate_id(true); $_SESSION['user_id'] } validate_session() { session_set_cookie_params(0); session_start(); if (isset($_SESSION['user_id']) === FALSE) { session_destroy(); logout(); header("Location: login_page"); } } logout() { session_set_cookie_params(0); session_start(); $_SESSION = array(); setcookie(session_name(), '', time() - 3600, '/'); session_destroy(); }
प्रत्येक पृष्ठ पहले validate_session() फ़ंक्शन को कॉल करता है। यदि सत्र अमान्य है तो यह लॉगिन पेज पर रीडायरेक्ट करता है। लॉगिन() फ़ंक्शन का उपयोग उपयोगकर्ता के लिए सत्र बनाने के लिए किया जाता है। जब उपयोगकर्ता लॉगआउट क्लिक करता है, तो लॉगआउट() फ़ंक्शन सत्र को नष्ट करने के लिए बुलाया जाता है।
समस्या है:
चेतावनी:: session_destroy(): सत्र वस्तु विनाश में विफल रहा है
मैं इस बहुत कम चेतावनी हो रही है बेतरतीब ढंग से लॉगआउट() फ़ंक्शन चेतावनी फेंकता है। लॉगआउट करने के लिए 20-30 कॉलों की तरह, मुझे इसे एक बार मिलता है। कोई विचार?
मैं विंडोज़ XP मशीन पर विकास कर रहा हूं।
अद्यतन: सत्र फ़ाइल-सिस्टम में संग्रहीत हैं।
पथ: सी: \ विन्डोज़ \ Temp
ऐसा लगता है यह एक लंबे समय के बाद से आप stackoverflow पर किसी भी सवाल का जवाब स्वीकार कर लिया है हो गया है .. –
हाँ! मैं stackoverflow में बहुत सक्रिय नहीं किया गया है। और कुछ मामलों में मुझे अभी तक एक संतोषजनक उत्तर नहीं मिला है। – Varun
हाय वरुण, क्या आप समझा सकते हैं कि आप उस तुलना में यात्रा का उपयोग क्यों करते हैं? आम तौर पर यदि (! Isset()) पर्याप्त होगा, मुझे पता है कि यह अधिक लोहे की चपेट में है लेकिन जारीकर्ता() को केवल एक बूलियन लौटा देना चाहिए, क्या आपको वास्तव में इसके प्रकार को प्रमाणित करने की आवश्यकता है? शायद यह संभव नहीं है, लेकिन हो सकता है कि कभी-कभी यह सच हो रहा हो जब इसे नहीं करना चाहिए? – picus