2012-05-09 4 views
7

यह मैं कैसे सेट सत्रज़ेंड फ्रेमवर्क में सत्रों को सही ढंग से कैसे मारें?

$this -> sess = new Zend_Session_Namespace('user'); 
$this -> sess -> username = "Bob"; 
$this -> sess -> admin = "1"; 

है और यह कैसे मैं इसे मारने

setcookie("mycookiename",md5(rand(10,1200)),time() - (60 * 60),"/",".site.com"); 
$_SESSION = array(); 
session_destroy(); 
$this -> _redirect('/'); 

है लेकिन यह अभी भी रहता है $ this-> sess-> व्यवस्थापक के रूप में '1' ... उपयोगकर्ता नाम चला गया है लेकिन व्यवस्थापक एक के रूप में रहता है। ग्राहक से जुड़े सभी सत्रों को हटाने का सही तरीका क्या है?

अगर मैं

$this->sess->admin = 0; 

करते तो यह काम करता है, लेकिन मुझे शक है इस प्रत्येक सत्र चर है कि मैं पकड़ के लिए सही तरीका है।

मैं भी

setcookie("mycookiename",md5(rand(10,1200)),time() - (60 * 60),"/",".site.com"); 
Zend_Session::namespaceUnset($this->sess); 

की कोशिश की और यह काम नहीं किया, यह किसी भी सत्र बंद नहीं किया।

+0

'Zend_Session :: namespaceUnset कर नष्ट करने के' Google – Esailija

+0

पर पहला परिणाम ऐसा है? सेटकुकी ("एसएल", एमडी 5 (रैंड (10,1200)), समय() - (60 * 60), "/", "साइट.com"); \t Zend_Session :: नेमस्पेस अनसेट ($ this-> sess); यह काम नहीं किया। – Darius

उत्तर

17

ग्राहक उपयोग के साथ जुड़े सभी सत्र को हटाने के लिए यह देखें:

\Zend_Session::destroy(true); 

इस पूरे सत्र को नष्ट करेगा और यह भी भेज सत्र से जुड़े किसी भी कुकीज को हटाने के लिए क्लाइंट को हेडर अनुरोध। आप वैकल्पिक रूप से उपयोगकर्ता कुकीज़ को हटाने के लिए इस विधि के पैरामीटर को गलत पर सेट कर सकते हैं। लेकिन कृपया ध्यान दें:

Zend_Session :: नष्ट (सही) या तो बुलाया जाना चाहिए इससे पहले कि पीएचपी HTTP हेडर भेजा है, या उत्पादन बफरिंग सक्षम होना चाहिए। यह वर्तमान सत्र से जुड़े लगातार डेटा के सभी को नष्ट कर देगा। हालांकि, PHP में कोई चर नहीं प्रभावित हैं, इसलिए आपके नामांकित सत्र (Zend_Session_Namespace के उदाहरण) पठनीय रहेंगे।

इन निम्नलिखित दृष्टिकोण का उपयोग निकालने के लिए:

$ns = 'auth' 
$namespace = new \Zend_Session_Namespace($ns); 
$namespace->unsetAll(); 

Please see here for further information

4

आप

Zend_Session::destroy($remove_cookie = true, $readonly = true); 

उपयोग कर सकते हैं manual

+0

धन्यवाद !! यह विधि काम किया। – Darius

+2

@ दारायस यह आश्चर्यजनक है कि आप [मैन्युअल] (http://framework.zend.com/manual/en/reference.html) पढ़कर क्या ढूंढ सकते हैं। मुझे नहीं पता था कि आपका प्रश्न पढ़ने से पहले इसे कैसे किया जाए। – vascowhite

+0

मैं ज़ेंड फ्रेमवर्क के लिए नया हूं और इस साइट पर तरीकों का प्रयास कर रहा था http://zendgeek.blogspot.com/2009/07/zend-framework-session-usage-and।एचटीएमएल लेकिन वे मेरे लिए काम नहीं कर रहे थे, इसलिए मैंने सोचा कि शायद मैं गलत वर्गों या कोड में कोड डाल रहा था। और मैनुअल मुझे कई बार भ्रमित करता है, शायद मैं इस प्रोग्रामिंग सामान के लिए कटौती नहीं कर रहा हूं। एक बार फिर आपका धन्यवाद। – Darius

10

विशेष सत्र (> सेक्स $ इस-)

Zend_Session::namespaceUnset('user'); 
+0

शायद इस मामले में मेरी तुलना में यह एक बेहतर विकल्प है। +1 – vascowhite