2011-05-11 19 views
12

कुकीज़ सेट करने और पढ़ने के लिए मैं Zend_Http_Cookie का उपयोग कैसे करता हूं?ज़ेंड में कुकीज़ का उपयोग कैसे करें?

मैं इस तरह कुकी सेट करने trie:

$cookie = new Zend_Http_Cookie('TestCookie','TestValue','localhost.com') लेकिन कोई कुकी उत्पन्न होता है। मैं ज़ेंड के साथ कुकीज़ कैसे पढ़ता हूं?

धन्यवाद

+0

[Zend_Http_Cookie] (http://framework.zend.com/apidoc/1.10/_Http_Cookie.html#Zend_Http_Cookie) क्लाइंट कोड के लिए उपयोग की जाने वाली कक्षा है (यानी, जब कुछ लिखना जो किसी अन्य सर्वर से अनुरोध करता है) - तो , नहीं, यह आपके ब्राउज़र पर एक कुकी नहीं भेजेगा। – HorusKol

उत्तर

20

जहाँ तक मुझे पता है वहाँ Zend फ्रेमवर्क में "setcookie" वर्ग नहीं है। सीधे शब्दों में उपयोग करें "सादे" php:

setcookie('cookieName', 'value', 'lifetime', 'path', 'domain'); 

एक कुकी पढ़ने के लिए, आप उदाहरण के रूप में उपयोग कर सकते हैं Zend_Controller_Request_Http();:

$request = new Zend_Controller_Request_Http(); 
    $myCookie = $request->getCookie('cookieName'); 
1

कुकी के लिए docs को देखते हुए और अतीत के अनुभव से याद वहाँ एक रास्ता नहीं है एक कुकी ऑब्जेक्ट को Response के साथ भेजने के लिए कहने के लिए।

मैं सुझाव देता हूं कि बस setcookie() का उपयोग करें।

4

ज़ेंड 1.12 के लिए, प्रतिक्रिया ऑब्जेक्ट के लिए कुकीज़ सेट करने का एक तरीका है।

मैनुअल में हिस्से के लिंक को नीचे शामिल किया गया है। पृष्ठ कभी गायब होने पर मैंने उनके उदाहरण भी संलग्न किए हैं।

http://framework.zend.com/manual/1.12/en/zend.controller.response.html#zend.controller.response.headers.setcookie

$this->getResponse()->setRawHeader(new Zend_Http_Header_SetCookie(
    'foo', 'bar', NULL, '/', 'example.com', false, true 
)); 

या

$cookie = new Zend_Http_Header_SetCookie(); 
$cookie->setName('foo') 
     ->setValue('bar') 
     ->setDomain('example.com') 
      ->setPath('/') 
     ->setHttponly(true); 
$this->getResponse()->setRawHeader($cookie); 

यह इतना है कि आप जब टेस्ट बनाने में समस्याएं आ रही नहीं है Zend के वस्तुओं और वर्गों का उपयोग करने के लिए महत्वपूर्ण है;)

+2

मैं उम्र के लिए इस विधि का उपयोग कर रहा था क्योंकि यह तरीका प्रतीत होता था, लेकिन मुझे पता चला कि इस तरह से कई कुकीज़ भेजना संभव नहीं है। केवल अंतिम सेट-कुकी रॉ-हेडर क्लाइंट को भेजा जाएगा क्योंकि Zend_Controller_Response_Abstract-> sendHeaders() के अंदर हेडर() कॉल के $ प्रतिस्थापन पैरामीटर को सत्य के डिफ़ॉल्ट के साथ कभी भी गलत पर सेट नहीं किया जाता है। एकाधिक कुकीज़ के साथ इस विधि का प्रयोग न करें! – Karsten

+2

यह ZF 1.12.x: $ यह-> getResponse() -> setHeader ('सेट-कुकी', $ कुकी-> getFieldValue(), false के लिए अच्छा लगता है; – Karsten

+0

एकाधिक कुकीज़ सेट करने के लिए ज़ेंड-अनुशंसित तरीके के लिए नीचे मेरी प्रतिक्रिया देखें। –

2

Zend के GitHub से issue एकाधिक कुकीज़ के बारे में:

$setCookieHeader = new Zend_Http_Header_SetCookie('othername1', 'othervalue1'); 
$appendCookie = new Zend_Http_Header_SetCookie('othername2', 'othervalue2'); 
$headerLine = $setCookieHeader->toStringMultipleHeaders(array($appendCookie)); 

$this->getResponse()->setRawHeader($headerLine); 
संबंधित मुद्दे