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

看起来您没有在 javascript 中设置域。

尝试类似:

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

我会使用相同的组件来编写和读取 cookie,否则你会对逆向工程感到疯狂。

所以我会用

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

CakePHP 文档中指定

我希望它有所帮助。

于 2012-10-19T07:39:30.447 回答
0

我面临同样的问题,终于找到了解决这个问题的方法,试试这个:->

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

现在您可以在控制器中读取 MyCookie,例如

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