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

問題は、私が見ているクッキーを設定すると、「設定」とクッキーの値がエコーアウトされることですが、訪問する/read/と「テスト」しか表示されず、クッキーの値が表示されません。また、Chrome で Cookie ビューアを使用してCAKEPHPいますが、自分のドメインの Cookie しか表示されませんsaved_times。Cookieが設定されているとは思いませんが、理由はわかりません

4

1 に答える 1

4

ビューがレンダリングされるまで、Cookie が設定されていないことがわかります。save_positionアクションを表示できなかったため、エラー ページが表示され、Cookie が設定されませんでした。save_position.ctpファイルを追加すると、すべてが正常に機能しました。

于 2013-07-28T04:09:59.627 に答える