我正在使用以下代码进行设置,然后在CakePHP中读取一个cookie。
public $components = array('Cookie');
public function beforeFilter(){
parent::beforeFilter();
$this->Cookie->name = 'saved_times';
$this->Cookie->time = '1 year';
$this->Cookie->domain = 'localhost';
$this->Cookie->path = '/';
$this->Cookie->httpOnly = false;
$this->Cookie->key = '+%)asG_~s*SAr&bSIq34$@11qe@s!@v!@*(XSL#$XOw!a232d#HKis~#^';
$this->Cookie->secure = false;
}
public function save_position($time){
if($this->Auth->user('id')){
//save to the database
return true;
}else{
//set browser cookie
$this->Cookie->write('time', $time);
echo "set", $this->Cookie->read('time');
}
}
public function read(){
echo $this->Cookie->read('time'), "test";
print_r($this->Cookie->read('time'));
}
问题在于,当我设置cookie时,我看到“设置”并且cookie值被回显,但是当我访问/read/
时,我只看到“测试”而没有cookie值。此外,我在Chrome中使用Cookie查看器,但我只看到我的域CAKEPHP
Cookie不是saved_times
。我认为cookie甚至没有被设置,但我不知道为什么
答案 0 :(得分:4)
事实证明,在呈现视图之前,cookie不会被设置。我没有查看我的save_position
操作,因此显示了错误页面,但没有设置cookie。一旦我添加了save_position.ctp
文件,一切正常。