установить cookie в Zend framework
Я новичок в Zend framework. Я написал этот код, чтобы установить 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 ответов
Zend_Http_Cookie
Не для установки cookies. Это класс, используемый Zend_Http_Client
для отправки и получения данных с сайтов, требующих cookies. Для установки cookies просто используйте стандартный PHP setcookie ():
setcookie('user_email_id', $data['user_email_id'], time() + 3600, '/');
setcookie('user_password', $data['user_password'], time() + 3600, '/');
это установит cookies, срок действия которых истекает через 1 час. Затем вы можете получить доступ к ним по последующим запросам, используя $_COOKIE['user_email_id']
и $_COOKIE['user_password']
; или если вы используете классы MVC ZF:$this->getRequest()->getCookie('user_email_id')
(из метода контроллера).
Регистрация 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
использовать этот способ, вы можете сделать это
в вашем контроллере сделайте код как
$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
куки устанавливаются, отправив ответ. Вы можете изменить ответ в коде.
$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
попробуй:
$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