Cookie未能在Chrome

时间:2016-08-23 10:03:10

标签: php google-chrome cookies setcookie

我在Chrome上遇到Cookie问题。 我使用php中的setcookie()函数作为自动重新验证已经通过验证过程的用户(使用LinkedIn API)的意思。

问题是,我设置的cookie在Firefox和IE 11上运行良好,但似乎在Chrome上几秒后就被删除了。我已经用一堆用户测试了它,同样的问题(我在等待其他浏览器的反馈)。

以下是设置Cookie的代码:

setcookie('CookieID', $var, (time()+365*24*3600), NULL, NULL, false, true);
setcookie('LinkedInAuth', $var, (time()+365*24*3600), NULL, NULL, false, true);

这是一个已知问题吗?我该如何解决这个问题?

编辑5:

我改变了主题标题,因为我完全回顾了我的方法。 (我也删除了以前的编辑,因为它们无关紧要) 我现在使用openssl_random_pseudo_bytes()函数生成一个唯一的ID,而不是使用LinkedIn ID作为我的cookie的值。 这是新代码:

$random = openssl_random_pseudo_bytes(32);
$UserKey = bin2hex($random);
$expiration= time() + 365*24*3600;
setcookie('CookieID', $UserKey, $expiration, NULL, NULL, false, false);

现在,Chrome正在按照要求创建一个具有随机值的Cookie,并且Cookie过期时间是正确的。不过,这不是正确的价值!我在控制台中回显$UserKey,它与cookie的价值不同。但在FF和IE上,它的工作就像一个魅力! Response标头为我的cookie提供了错误的值,但请求标头有正确的值。

有人有经验吗?问题来自我的代码或我使用的功能吗?

1 个答案:

答案 0 :(得分:1)

以下代码适用于Chrome版本52. 某些在Linux上:

$var = '1234567890';
setcookie('CookieID', 'CK'.$var, (time()+365*24*3600), NULL, NULL, false, true);
echo 'Cookie "CookieID" should be set to "CK'.$var.'"';
exit;

结果如下:Cookie test in Chrome

我只能假设您在呈现页面之前未正确设置$var或未设置$varsetcookie()header函数且必须调用在渲染页面之前)。

你在做与上述代码不同的事情吗?