2

まず、次のコードでわかるように、Javascript 関数を使用して Cookie を作成します。

function SetCookie(cookieName,cookieValue,nDays) {
     var today = new Date();
     var expire = new Date();
     if (nDays==null || nDays==0) nDays=1;
     expire.setTime(today.getTime() + 3600000*24*nDays);
     document.cookie = cookieName+"="+escape(cookieValue)+ ";expires="+expire.toGMTString();
}

SetCookie('MyCookie','MyValue',7);  

次に、CakePHP を使用して値を読み取ろうとします。

        <?php 
        $cookie = $this->Cookie->read('MyCookie');
        if ( $cookie == '' ){
            echo "Cookie not set";
        } else { 
        echo "Value: ".$cookie;
    }


?>

結果は、Cookie が設定されていないことを示しています。ただし、通常の Javascript 関数を使用して読み取ると、結果は異なります。

Javascript によって作成された Cookie を CakePHP でも読み取ることができるようにする正しい方法は?

4

3 に答える 3

0

同じコンポーネントを使用してCookieの書き込みと読み取りを行います。そうしないと、リバースエンジニアリングに夢中になります。

だから私は使用します

$this->Cookie->write('MyCookie', array('MyValue'=>'7'));

CakePHPのドキュメントで指定されているとおり

お役に立てば幸いです。

于 2012-10-19T07:39:30.447 に答える
0

JavaScriptでドメインを設定しているようには見えません。

次のようなものを試してください:

document.cookie = cookieName+"="+escape(cookieValue)+ ";expires="+expire.toGMTString() 
    + "; path=/; domain=.example.com";
于 2012-10-19T04:16:55.743 に答える
0

私は同じ問題に直面しており、最終的にこの問題の解決策を見つけます。これを試してください:->

SetCookie('CakeCookie["MyCookie"]','MyValue',7);

これで、コントローラーで MyCookie を次のように読み取ることができます

$this->Cookie->read('MyCookie');
于 2015-12-31T14:07:16.167 に答える