2011-05-11 13 views
12

¿Cómo uso Zend_Http_Cookie para configurar y leer cookies?¿Cómo utilizar las cookies en Zend?

me trie al conjunto de cookies de esta manera:

$cookie = new Zend_Http_Cookie('TestCookie','TestValue','localhost.com') pero se genera ninguna cookie. ¿También cómo leo las cookies con Zend?

Gracias

+0

[Zend_Http_Cookie] (http://framework.zend.com/apidoc/1.10/_Http_Cookie.html#Zend_Http_Cookie) es una clase usada para el código de cliente (es decir, cuando se escribe algo que hace una petición a otro servidor) - por lo , no, no enviará una cookie a su navegador. – HorusKol

Respuesta

20

Por lo que yo sé es que no Clase "setCookie" en Zend Framework. Sólo tiene que utilizar "normal" php:

setcookie('cookieName', 'value', 'lifetime', 'path', 'domain'); 

para leer una galleta, se puede utilizar como Zend_Controller_Request_Http(); Ejemplo:

$request = new Zend_Controller_Request_Http(); 
    $myCookie = $request->getCookie('cookieName'); 
1

Mirando el docs for Cookie y recordar de la experiencia pasada no es una forma de decirle a un objeto de cookie que se envíe junto con Response.

Sugiero simplemente usar setcookie().

4

Para Zend 1.12, hay es una forma de establecer cookies para el objeto de respuesta.

El enlace a la parte en el manual se incluye a continuación. También adjunté sus ejemplos en caso de que la página desaparezca.

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

o

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

Es importante la utilización de objetos y clases de Zend para que no tenga problemas al crear pruebas;)

+2

Estaba usando este método por años, ya que parecía ser el camino, pero descubrí que no es posible enviar varias cookies de esta manera. Solo se enviará al cliente el último Set-Cookie Raw-Header ya que el parámetro $ replace de la llamada header() dentro de Zend_Controller_Response_Abstract-> sendHeaders() nunca se configura como falso con un valor predeterminado de true. ¡No use este método con múltiples cookies! – Karsten

+2

Esto se ve bien para ZF 1.12.x: $ this-> getResponse() -> setHeader ('Set-Cookie', $ cookie-> getFieldValue(), false); – Karsten

+0

Para la forma recomendada por Zend de configurar múltiples cookies vea mi respuesta a continuación. –

2

De github de Zend issue sobre varias cookies:

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