2012-03-01 37 views
6

Tôi mới làm quen với khung công tác zend. Tôi đã viết mã này để đặt cookie trong trang web của mình.đặt cookie trong khung công tác zend

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); 
} 

Tôi thậm chí không biết bằng cách viết mã này, cookie của tôi có được đặt hay không? bây giờ Nếu tôi muốn truy xuất cookie thì tôi có thể làm như thế nào?

Trả lời

16

Zend_Http_Cookie không phải là để thiết lập các tập tin cookie. Nó là một lớp được sử dụng bởi Zend_Http_Client để gửi và nhận dữ liệu từ các trang web yêu cầu cookie. Để đặt cookie, chỉ cần sử dụng hàm chuẩn PHP setcookie():

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

điều này sẽ đặt cookie hết hạn sau 1 giờ. Sau đó, bạn có thể truy cập các yêu cầu này trên các yêu cầu tiếp theo bằng cách sử dụng $_COOKIE['user_email_id']$_COOKIE['user_password']; hoặc nếu bạn đang sử dụng các lớp MVC của ZF: $this->getRequest()->getCookie('user_email_id') (từ một phương thức điều khiển).

+0

'$ this-> getRequest() -> getCookie ('user_email_id')' trả về một đối tượng cookie. Bây giờ, làm thế nào để có được giá trị từ đối tượng cookie đó? – Stephane

1

Kiểm tra Zend_Http_Cookie

Bạn sẽ nhận được cookie của bạn như sau:

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

Hãy thử:

 

$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. 
 

Ref: Zend Cookies

+0

$ ret_as là gì? –

+0

là loại trả về, bạn có thể sử dụng: COOKIE_STRING_ARRAY, COOKIE_STRING_CONCAT. Nếu không có gì được chỉ định mặc định là COOKIE_OBJECT là kiểu trả về –

1

Sử dụng cách này bạn có thể làm điều đó

trong điều khiển của bạn làm điều đó mã như

$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 của bạn được thiết lập bằng cách gửi câu trả lời. Bạn có thể sửa đổi phản hồi trong mã của mình.

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

Theo mặc định, bộ điều khiển phía trước gửi phản hồi khi hoàn thành việc gửi yêu cầu; thông thường bạn sẽ không bao giờ cần phải gọi nó. http://framework.zend.com/manual/1.12/en/zend.controller.response.html

+2

+1. Tuy nhiên hãy cẩn thận với 'setRawHeader ($ cookie)' vì một số máy khách http (ví dụ, ** ASIHTTP ** trong Objective-C) sẽ viết lại tất cả các cookie được thiết lập trước khi các tiêu đề sẽ gửi. Sử dụng '$ this-> getResponse() -> setHeader ($ cookie-> getFieldName(), $ cookie-> getFieldValue());' thay thế. – Stafox

Các vấn đề liên quan