如何在Zend中使用cookies?

时间:2011-05-11 08:18:28

标签: php zend-framework

我如何使用Zend_Http_Cookie设置和读取cookie?

我想设置这样的cookie:

$cookie = new Zend_Http_Cookie('TestCookie','TestValue','localhost.com')但未生成Cookie。我是如何用Zend读取cookie的?

由于

4 个答案:

答案 0 :(得分:20)

据我所知,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');

答案 1 :(得分:4)

对于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的对象和类非常重要,这样在创建测试时就不会遇到问题;)

答案 2 :(得分:2)

来自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);

答案 3 :(得分:1)

查看Cookie的docs并记住过去的经验,无法告知Cookie对象与Response一起发送。

我建议您使用setcookie()