2012-03-01 23 views
6

मैं फ्रेमवर्क को ज़ेन करने के लिए नया हूं। मैंने अपनी वेबसाइट में कुकी सेट करने के लिए इस कोड को लिखा है।ज़ेन ढांचे में सेट कुकी

public function setCookie($data){ 
    $email_cookie = new Zend_Http_Cookie('user_email_id', $data['user_email_id'], $_SERVER['HTTP_HOST'], '', FALSE); 
    $pass_cookie = new Zend_Http_Cookie('user_password', $data['user_password'], $_SERVER['HTTP_HOST'], '', FALSE); 
    $cookie_jar = new Zend_Http_CookieJar(); 
    $cookie_jar->addCookie($email_cookie); 
    $cookie_jar->addCookie($pass_cookie); 
} 

मुझे तो पता ही न इस कोड लिख कर, मेरे कुकी या सेट नहीं है? अब अगर मैं कुकी को पुनर्प्राप्त करना चाहता हूं तो मैं इसे कैसे कर सकता हूं?

उत्तर

16

Zend_Http_Cookie कुकी सेट करने के लिए नहीं है। यह कुकीज़ की आवश्यकता वाले साइटों से डेटा भेजने और प्राप्त करने के लिए Zend_Http_Client द्वारा उपयोग की जाने वाली कक्षा है। सेट करने के लिए कुकीज़ सिर्फ मानक PHP setcookie() समारोह का उपयोग करें:

setcookie('user_email_id', $data['user_email_id'], time() + 3600, '/'); 
setcookie('user_password', $data['user_password'], time() + 3600, '/'); 

इस कुकी जो 1 घंटे में समाप्त हो सेट हो जाएगा। इसके बाद आप $_COOKIE['user_email_id'] और $_COOKIE['user_password'] का उपयोग कर बाद के अनुरोधों पर इन तक पहुंच सकते हैं; या यदि आप जेडएफ के एमवीसी कक्षाओं का उपयोग कर रहे हैं: $this->getRequest()->getCookie('user_email_id') (नियंत्रक विधि से)।

+0

'$ this-> getRequest() -> getCookie (' user_email_id ')' कुकी ऑब्जेक्ट देता है। अब, उस कुकी ऑब्जेक्ट से मूल्य कैसे प्राप्त करें? – Stephane

1

चेक Zend_Http_Cookie

आप निम्न की तरह अपने कुकी मिल जाएगा:

echo $email_cookie->getName(); // user_email_id 
echo $email_cookie->getValue(); // Your cookie value 

echo ($email_cookie->isExpired() ? 'Yes' : 'No'); // Check coookie is expired or not 
0

प्रयास करें:

 

$ret_as = COOKIE_STRING_ARRAY; 
Zend_Http_CookieJar->getAllCookies($ret_as); 
//Get all cookies from the jar. $ret_as specifies the return type 
//as described above. If not specified, $ret_type defaults to COOKIE_OBJECT. 
 

रेफरी: Zend Cookies

+0

$ ret_as क्या है? –

+0

रिटर्न प्रकार है, तो आप इसका उपयोग कर सकते हैं: COOKIE_STRING_ARRAY, COOKIE_STRING_CONCAT। यदि कुछ भी डिफ़ॉल्ट निर्दिष्ट नहीं किया गया है तो COOKIE_OBJECT रिटर्न प्रकार –

1

इस तरह से उपयोग आप अपने नियंत्रक में यह

क्या कर सकते हैं यह कोड के रूप में करते हैं

$cookie = new Zend_Http_Cookie('cookiename', 
         'cookievalue', 
         time() + 7200 //expires after 2 hrs 
         ); 
echo $cookie->__toString(); 
echo $cookie->getName(); //cookie name 
echo $cookie->getValue(); //cookie value 
1

आपकी कुकीज़ प्रतिक्रिया भेज कर स्थापित कर रहे हैं। आप अपने कोड में प्रतिक्रिया संशोधित कर सकते हैं।

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

डिफ़ॉल्ट रूप से, सामने नियंत्रक जब यह अनुरोध भेजने समाप्त हो गया है प्रतिक्रिया भेजता है; आम तौर पर आपको इसे कॉल करने की आवश्यकता नहीं होगी। http://framework.zend.com/manual/1.12/en/zend.controller.response.html

+2

+1। हालांकि 'setRawHeader ($ कुकी)' से सावधान रहें क्योंकि कुछ http क्लाइंट (उदाहरण के लिए, ** उद्देश्य-सी में ASIHTTP **) हेडर भेजे जाने से पहले सेट की गई सभी कुकीज़ को फिर से लिखेंगे। '$ this-> getResponse() -> setHeader ($ कुकी-> getFieldName(), $ कुकी-> getFieldValue()) का उपयोग करें; 'इसके बजाय। – Stafox

संबंधित मुद्दे