2012-03-01 2 views
6

Я новичок в zend framework. Я написал этот код, чтобы установить cookie на моем сайте.набор cookie в 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); 
} 

Я даже не знаю, написав этот код, мой файл cookie установлен или нет? сейчас Если я хочу получить файл cookie, то как я могу это сделать?

ответ

16

Zend_Http_Cookie не для установки куки. Это класс, используемый Zend_Http_Client для отправки и получения данных с сайтов, которым требуются файлы cookie. Для того, чтобы установить печенье просто использовать стандартный 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']; или если вы используете классы MVC ZF: $this->getRequest()->getCookie('user_email_id') (из метода контроллера).

+0

'$ this-> getRequest() -> getCookie ('user_email_id')' возвращает объект cookie. Теперь, как получить значение из этого объекта cookie? – 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

Try:

 

$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? –

+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 ($ cookie)', потому что некоторые http-клиенты (например, ** ASIHTTP ** в Objective-C) будут переписывать все файлы cookie, настроенные до отправки заголовков. Используйте '$ this-> getResponse() -> setHeader ($ cookie-> getFieldName(), $ cookie-> getFieldValue()); вместо этого. – Stafox

Смежные вопросы