2012-03-01 22 views
6

Soy nuevo en zend framework. Escribí este código para configurar cookies en mi sitio web.establecer cookies en 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); 
} 

Ni siquiera sé escribiendo este código, mi cookie está configurada o no? ahora Si quiero recuperar la cookie, ¿cómo puedo hacerlo?

Respuesta

16

Zend_Http_Cookie no sirve para configurar las cookies. Es una clase utilizada por Zend_Http_Client para enviar y recibir datos de sitios que requieren cookies. Para configurar las cookies sólo tiene que utilizar la función estándar de PHP setcookie():

setcookie('user_email_id', $data['user_email_id'], time() + 3600, '/'); 
setcookie('user_password', $data['user_password'], time() + 3600, '/'); 

esto establecerá las cookies que expiran en 1 hora. A continuación, puede acceder a estos en solicitudes posteriores usando $_COOKIE['user_email_id'] y $_COOKIE['user_password']; o si está utilizando las clases MVC de ZF: $this->getRequest()->getCookie('user_email_id') (desde un método de controlador).

+0

El '$ this-> getRequest() -> getCookie ('user_email_id')' devuelve un objeto de cookie. Ahora, ¿cómo obtener el valor de ese objeto de cookie? – Stephane

1

Comprobar Zend_Http_Cookie

Usted recibirá su cookie como siguiente:

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

Probar:

 

$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

¿cuánto cuesta $ ret_as? –

+0

que es el tipo de devolución, puede usar: COOKIE_STRING_ARRAY, COOKIE_STRING_CONCAT. Si no se especifica nada, el valor predeterminado es COOKIE_OBJECT como tipo de retorno –

1

Utilice esta manera usted puede hacerlo

en su controlador hacerlo código como

$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

Sus galletas son fijados por el envío de la respuesta. Puedes modificar la respuesta en tu código.

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

Por defecto, el controlador frontal envía una respuesta cuando ha terminado de enviar la solicitud; por lo general, nunca tendrá que llamarlo. http://framework.zend.com/manual/1.12/en/zend.controller.response.html

+2

+1. Sin embargo, tenga cuidado con 'setRawHeader ($ cookie)' porque algunos clientes http (por ejemplo, ** ASIHTTP ** en Objective-C) reescribirán todas las cookies configuradas antes de que se envíen los encabezados. Use '$ this-> getResponse() -> setHeader ($ cookie-> getFieldName(), $ cookie-> getFieldValue());' en su lugar. – Stafox