我如何使用Zend_Http_Cookie来设置和读取cookie?如何在Zend中使用cookie?
我特里结构来设置cookie的是这样的:
$cookie = new Zend_Http_Cookie('TestCookie','TestValue','localhost.com')
,但不会产生的cookie。还有我如何阅读Zend的cookies?
感谢
我如何使用Zend_Http_Cookie来设置和读取cookie?如何在Zend中使用cookie?
我特里结构来设置cookie的是这样的:
$cookie = new Zend_Http_Cookie('TestCookie','TestValue','localhost.com')
,但不会产生的cookie。还有我如何阅读Zend的cookies?
感谢
据我所知是没有出现在Zend框架“setCookie方法”类。简单地用“普通” PHP:
setcookie('cookieName', 'value', 'lifetime', 'path', 'domain');
要读取cookie,您可以使用Zend_Controller_Request_Http();
为例:
$request = new Zend_Controller_Request_Http();
$myCookie = $request->getCookie('cookieName');
对于Zend 1.12,是一种设置响应对象的cookie的方法。
下面包含手册中部分的链接。我还附上他们的例子,以防万一页面消失。
$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的对象和类,以便创建测试时,你就不会遇到问题,这是很重要的;)
我以这种方式使用了这种方法很久,但我发现这样不可能发送多个cookie。由于Zend_Controller_Response_Abstract-> sendHeaders()中的header()调用的$ replace参数永远不会设置为false,并且默认值为true,所以只有最后一个Set-Cookie Raw-Header会被发送到客户端。不要对多个Cookie使用此方法! – Karsten 2014-03-07 08:18:28
这对于ZF 1.12.x来说很好: $ this-> getResponse() - > setHeader('Set-Cookie',$ cookie-> getFieldValue(),false); – Karsten 2014-03-07 08:33:18
对于Zend建议的设置多个cookie的方法,请参阅下面的我的回复。 – 2015-08-18 09:29:07
从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);
[Zend_Http_Cookie](http://framework.zend.com/apidoc/1.10/_Http_Cookie.html#Zend_Http_Cookie)是一个用于客户端代码的类(例如,当编写向另一个服务器发送请求的东西时) - so不,它不会将cookie发送到您的浏览器。 – HorusKol 2012-10-07 06:48:56