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