Как использовать файлы cookie в Zend?
Как я использую Zend_Http_Cookie для установки и чтения файлов cookie?
Я пытаюсь установить cookie следующим образом:
$cookie = new Zend_Http_Cookie('TestCookie','TestValue','localhost.com')
, но cookie не создается. Также как я читаю файлы cookie с Zend?
Спасибо
Ответы
Ответ 1
Насколько я знаю, в Zend Framework нет класса setCookie. Просто используйте "простой" php:
setcookie('cookieName', 'value', 'lifetime', 'path', 'domain');
Чтобы прочитать файл cookie, вы можете использовать Zend_Controller_Request_Http();
в качестве примера:
$request = new Zend_Controller_Request_Http();
$myCookie = $request->getCookie('cookieName');
Ответ 2
Для Zend 1.12 есть способ установки файлов cookie для объекта ответа.
Ссылка на часть руководства приведена ниже. Я также приложил свои примеры, если страница когда-либо исчезнет.
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, чтобы вы не сталкивались с проблемами при создании тестов;)
Ответ 3
Из Zend github issue о нескольких файлах cookie:
$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);
Ответ 4
Глядя на docs для Cookie и помня о прошлом опыте, нет способа сообщить, что объект cookie будет отправлен вместе с Response.
Я предлагаю просто использовать setcookie()
.