CakePHP:如何读取Javascript cookie?

CakePHP:如何读取Javascript cookie?,cakephp,cookies,Cakephp,Cookies,首先,我使用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);

首先,我使用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函数读取时,结果是不同的


如何正确地让CakePHP也可以读取Javascript创建的cookie?

看起来您不是在用Javascript设置域

尝试以下方法:

document.cookie = cookieName+"="+escape(cookieValue)+ ";expires="+expire.toGMTString() 
    + "; path=/; domain=.example.com";

我会使用相同的组件编写和读取cookie,否则您会对反向工程发疯

所以我会用

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


我希望这能有所帮助。

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

SetCookie('CakeCookie["MyCookie"]','MyValue',7);
现在你可以在你的控制器上读MyCookie了

$this->Cookie->read('MyCookie');

我假设您将example.com替换为您的域?:-)您是否尝试过在chrome上使用类似“WebDeveloper”的扩展来查看cookie的详细信息?你能发布你的发现吗,这样我们就可以确保javascript设置正确了?如果你只尝试普通的PHP呢?echo$_COOKIE[“mycokie”];不,我从来没用过。看起来CakePHP默认加密任何创建的Cookie(使用$this->Cookie->write),因此CakePHP读取Cookie的机制也可能不同(我不确定)。我认为,如果cookie是使用Javascript创建的,那么最好也使用Javascript获取cookie的值。:)我同意。我认为最好在我的CakePHP视图(.ctp)文件中放一个Javascript内联代码来获取cookie的值。在某些情况下,应用程序进程需要在客户端创建cookie。