在zend框架中设置cookie

时间:2012-03-01 10:53:57

标签: php zend-framework cookies

我是zend框架的新手。我已经编写了这段代码来在我的网站上设置cookie。

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

我甚至不知道写这段代码,我的cookie是否设置? 现在如果我想要检索cookie,我该怎么办呢?

5 个答案:

答案 0 :(得分:18)

Zend_Http_Cookie不适用于设置Cookie。它是Zend_Http_Client用于从需要cookie的站点发送和接收数据的类。要设置cookie,只需使用标准的PHP setcookie()函数:

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

这将设置在1小时后过期的Cookie。然后,您可以使用$_COOKIE['user_email_id']$_COOKIE['user_password']在后​​续请求中访问这些内容。或者如果您正在使用ZF的MVC类:$this->getRequest()->getCookie('user_email_id')(来自控制器方法)。

答案 1 :(得分:2)

您的Cookie是通过发送回复来设置的。您可以修改代码中的响应。

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

默认情况下,前端控制器在完成调度请求后发送响应;通常你永远不需要打电话。 http://framework.zend.com/manual/1.12/en/zend.controller.response.html

答案 2 :(得分:1)

检查Zend_Http_Cookie

您将获得如下cookie:

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

答案 3 :(得分:1)

以这种方式使用

控制器中的

代码为

$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

答案 4 :(得分:0)

尝试:


$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. 

参考:Zend Cookies