JS设置cookie没有在PHP中读取

时间:2013-07-11 10:30:27

标签: php javascript cookies

好的,这让我疯狂。我甚至无法在此处获得调试代码。

使用https://github.com/carhartl/jquery-cookie,我设置了一个Cookie:

var link=$.getQueryParam('q');
var cookie_name="project_"+q+"_diff";
$.cookie(cookie_name,true,{expires:7,path:'/'});

我尝试在PHP脚本中读取此cookie:

$cookie_name="project_".$q."_diff"; 
if($_COOKIE[$cookie_name]=='true') 
  {
    echo "<!-- Cookie Status is TRUE -->";
    // stuff
  }
else 
  {
    echo "<!-- Cookie Status is FALSE for cookie '$cookie_name' \n All cookies: ".print_r($_COOKIE,true)."\n-->";
    // Other stuff
  }

我在Chrome的控制台中验证了各种页面重新加载,实际上已经设置了JS cookie,我可以稍后访问它。

源代码结果?

<!-- Cookie Status is FALSE for cookie 'project_80afd7a53462bb02dfd39e359ac3f291_diff' 
 All cookies: Array
(
)
-->

我还在控制台中根据另一个StackOverflow问题运行了以下内容,稍后在控制台中检索了结果,但仍未输出到JS。

function createCookie(name,value,days) {
if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/; domain=.compute.amazonaws.com";
}

我没有收到任何饼干。设置有点奇怪(在渲染的Jinja模板上运行PHP)但所有其他标准变量都在工作,我只需要一个会话长用户切换和cookie似乎是明显的(如果不合作)解决方案。如果没人能解决这个问题,我愿意接受建议......

2 个答案:

答案 0 :(得分:0)

我也有这个问题。我通过删除cookie描述中的域来解决它。

示例:

document.cookie="username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/"; 

P.S。我在IE,Chrome和Opera中发现了这个问题。在Firefox中它可以工作。

答案 1 :(得分:-1)

将此代码放在index.php页面

if(isset($_COOKIE['uniqueID'])=='')
{
$uniquenum = rand(1000, 10000);
setcookie('uniqueID',$uniquenum,time() + (86400 * 7)); // 86400 = 1 day
}

使用

获取cookie值
if(isset($_COOKIE['uniqueID']) && !empty($_COOKIE['uniqueID']))
{
}