[英]PHP can't remove cookie that was set by JavaScript
是否可以删除通过JS使用PHP设置的cookie?
我这样做:
* FRONT(JS):
if ($.cookie('myCookie'))
{
console.log('Cookie.. :( ');
}
else
{
console.log('Yaay! No cookie!');
$.cookie('myCookie', '123');
}
BACK(PHP):
if (isset($_REQUEST['removeCookie']))
{
setcookie("myCookie", "", time()-3600);
unset($_COOKIE['myCookie']);
}
结果:
似乎这是一个谜
您无法强制浏览器删除cookie文件。 但是,您可以删除cookie的内容并使其过期。 这正是您在上面的代码中所做的。 我可能会稍微调整一下:
setcookie('myCookie', '', 1, '/'); // no need to calculate one hour ago.
如果客户端时间错误,使用time()函数设置cookie过期可能无法按预期工作。
要取消cookie尝试,
setcookie('myCookie', 'blah blah', 1);
资料来源: php setcookie docs中的评论
这将取决于用户PC在超时后删除cookie。 我个人不相信。 我将cookie设置为空值,或将其设置为DELETED
然后在测试代码中检查是否已设置,然后检查该值是否为空或不是DELETED
要通过PHP从浏览器中完全删除cookie,请尝试此代码
$name = 'exists_cookie';
unset($_COOKIE[$name]);
// Set empty value
$blank = setcookie($name, '', time() - 3600);
有人可以在测试机器上运行此代码我有点困惑为什么cookie可以“取消设置”但不能在PHP中进行值更改或过期等似乎setcookie()根本不起作用。
<script type="text/javascript" src="jquery.js"></script>
<script src="jquery.cookie.js"></script>
<script>
$.cookie('myCookie', '123' ,'/');
console.log("Created myCookie");
</script>
<?php
echo $_COOKIE['myCookie'];
//Comment/uncomment below as required
//setcookie("myCookie", "BLAH", time()-430000);
//$_COOKIE['myCookie'] = "BLAH";
setcookie('myCookie', '', 1, '/');
echo "<br />unset myCookie";
echo "<br />".$_COOKIE['myCookie'];
?>
<script>
console.log($.cookie('myCookie').length);
if ($.cookie('myCookie').length>0)
{
console.log('Cookie exists ');
console.log($.cookie('myCookie'));
}
else
{
console.log('Yaay! No cookie!');
}
</script>
你似乎能够创建一个php <> JS cookie不匹配,即:2个cookie完全相同,但存储不同的数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.