2012-03-02 13 views
5

session_destroy() फ़ंक्शन क्या करता है? वैश्विक सरणी $ _SESSION में सभी सत्र चर को हटाने के लिए मुझे session_unset() का उपयोग करना होगा। ग्राहक ब्राउज़र से सत्र को निकालने के लिए मेरे पास है (सत्र आईडी और नाम हटाना) को सेट किए बिना कुकीज़ करने के लिए:सत्र_ नष्ट क्यों करें() की आवश्यकता है?

unset($_COOKIES[session_id()]); 
unset($_COOKIES[session_name()]); 

session_destroy() समारोह क्यों आवश्यक है?

+0

http://us.php.net/manual/en/function.session-destroy.php –

+0

आपको बहुत धन्यवाद, मैंने कई बार पढ़ा है लेकिन यह समझ में नहीं आता कि यह क्या करता है। यह वास्तव में सत्र को नष्ट क्यों नहीं करता है। सत्र को नष्ट करने के लिए मुझे दो और कदमों का उपयोग करना होगा। लेकिन वास्तव में session_destroy() मेरे लिए उन कदमों को करना चाहिए। – Green

+2

यदि * एक और कोड * के उत्तर ने आपको आवश्यक जानकारी प्रदान की है (मैं नहीं देख सकता कि यह कैसे हो सकता है), क्या आप इसे स्वीकार करेंगे? आमतौर पर यह चीजें कैसे की जाती हैं: पी – RobinJ

उत्तर

11

session_destroy() पूरे सत्र को समाप्त करता है, जिसका अर्थ है कि इसे PHP के सत्र संग्रहण से हटा दिया जाएगा और इसका कभी भी उपयोग नहीं किया जा सकता है। यदि आप केवल सत्र चर और कुकीज़ को अनसेट करते हैं, तो सत्र अभी भी सक्रिय सर्वर-पक्ष होगा और संभावित रूप से पुन: उपयोग किया जा सकता है यदि कुछ सत्र चर फिर से सेट किए जाते हैं और मूल सत्र आईडी वाली कुकी क्लाइंट को फिर से भेजी जाती है।

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

  • session_start() सत्र आईडी है कि सत्र रजिस्ट्री से $_SESSION के लिए भेजा ग्राहक से संबंधित सभी सत्र चर का आयात करता है: एक सत्र पहले से ही बनाया गया है मान लें और यह करने के लिए पंजीकृत वेरिएबल नहीं है, यहाँ कार्यों करना क्या का अवलोकन सरणी
  • session_unset() या unset()$_SESSION पर चर वर्तमान सत्र के लिए पंजीकृत सभी चर साफ हो जाएगा बुला, लेकिन यह नहीं स्पष्ट सत्र स्वयं
  • unsetting ग्राहक के सत्र कुकी CLI को यह संकेत दे देंगे यह है कि सत्र खत्म हो गया है, लेकिन यह सर्वर पर सत्र रजिस्ट्री से सत्र को हटा नहीं सकता है या तो
  • session_destroy() एकमात्र ऐसा कार्य है जो वास्तव में सत्र रजिस्ट्री से सत्र को शुद्ध करेगा, इस प्रकार सचमुच सत्र को 'नष्ट' कर देगा

session_destroy() सभी सत्र चर का पंजीकरण रद्द करते हैं, यह स्क्रिप्ट कि वर्तमान में क्रियान्वित कर रहा है में $_SESSION सरणी साफ़ नहीं होगी, तो यह अभी भी एक अच्छा विचार कीड़े और सुरक्षा के मुद्दों को रोकने के लिए सत्र चर अनसेट करने के लिए है।

तो $_SESSION (या $HTTP_SESSION_VARS पीएचपी 4.0.6 या उससे कम के लिए) प्रयोग किया जाता है, के लिए unset() का उपयोग करें:

एक संबंधित नोट पर, पीएचपी मैनुअल session_unset() बल्कि सेट नहीं $_SESSION से कुंजी का उपयोग करने के लिए नहीं की सिफारिश की एक सत्र परिवर्तक, यानी unset($_SESSION['varname']); unregister।

+0

'पुराने बहिष्कृत कोड के लिए केवल session_unset() का उपयोग करें जो $ _SESSION का उपयोग नहीं करता है।' सभी सत्र VARIABLES का उपयोग करने के लिए: ' $ _SESSION = array() ' – MTVS