2

我正在使用以下代码进行设置,然后在 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甚至没有被设置,但我不知道为什么

4

1 回答 1

4

事实证明,在呈现视图之前没有设置 cookie。我看不到我的save_position操作,所以显示了一个错误页面,它没有设置 cookie。添加save_position.ctp文件后,一切正常。

于 2013-07-28T04:09:59.627 回答