2012-03-01 23 views
6

Jestem nowy, aby zend Framework. Mam napisać ten kod, aby ustawić plik cookie na mojej stronie.Ustaw plik cookie w Zend Framework

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

Nie wiem nawet, pisząc ten kod, mój plik cookie jest ustawiony, czy nie? teraz Jeśli chcę odzyskać plik cookie, to jak mogę to zrobić?

Odpowiedz

16

Zend_Http_Cookie nie jest do ustawiania ciasteczek. Jest to klasa używana przez Zend_Http_Client do wysyłania i odbierania danych z witryn wymagających plików cookie. Aby ustawić ciasteczka po prostu użyć standardowego PHP setcookie() funkcję:

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

to ustawi cookie, które wygasają w ciągu 1 godziny. Następnie można uzyskać do nich dostęp w następnych żądaniach, używając $_COOKIE['user_email_id'] i $_COOKIE['user_password']; lub jeśli używasz klas MVC ZF: $this->getRequest()->getCookie('user_email_id') (z metody kontrolera).

+0

'$ this-> getRequest() -> getCookie ('user_email_id')' zwraca obiekt cookie. Teraz, jak uzyskać wartość z tego obiektu cookie? – Stephane

1

Sprawdź Zend_Http_Cookie

Dostaniesz swoje ciasteczko jak następuje:

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

Spróbuj:

 

$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

co to jest $ ret_as? –

+0

to jest typ zwracany, możesz użyć: COOKIE_STRING_ARRAY, COOKIE_STRING_CONCAT. Jeśli nic nie jest określone, domyślnym ustawieniem jest COOKIE_OBJECT jako typ zwracany –

1

Wykorzystanie w ten sposób można zrobić to

w kontrolerze zrobić to kod jako

$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

Twoje ciasteczka są ustawiane przez wysłanie odpowiedzi. Możesz zmodyfikować odpowiedź w swoim kodzie.

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

Domyślnie przedni kontroler wysyła odpowiedź po zakończeniu wysyłania żądania; zazwyczaj nigdy nie będziesz musiał tego wywoływać. http://framework.zend.com/manual/1.12/en/zend.controller.response.html

+2

+1. Należy jednak zachować ostrożność przy użyciu 'setRawHeader ($ cookie)', ponieważ niektórzy klienci http (na przykład ** ASIHTTP ** w Objective-C) przepisują wszystkie pliki cookie skonfigurowane przed wysłaniem nagłówków. Użyj '$ this-> getResponse() -> setHeader ($ cookie-> getFieldName(), $ cookie-> getFieldValue());' zamiast. – Stafox