PHP无法删除JavaScript设置的cookie

时间:2013-03-06 16:11:42

标签: php javascript cookies

是否可以通过JS使用PHP删除前面设置的cookie?

我这样做:

* FRONT(JS):

if ($.cookie('myCookie'))
{
   console.log('Cookie.. :(  ');
}
else
{
    console.log('Yaay! No cookie!');
    $.cookie('myCookie', '123');
}

返回(PHP):

if (isset($_REQUEST['removeCookie']))
{
   setcookie("myCookie", "", time()-3600);
   unset($_COOKIE['myCookie']);
}

结果:

enter image description here

似乎是一种神秘感

5 个答案:

答案 0 :(得分:9)

您无法强制浏览器删除Cookie文件。但是,您可以删除cookie的内容并使其过期。这正是您在上面的代码中所做的。我可能会稍微调整一下:

setcookie('myCookie', '', 1, '/'); // no need to calculate one hour ago.

答案 1 :(得分:4)

如果客户端时间错误,使用time()函数设置cookie expire可能无法正常工作。

取消设置cookie尝试,

setcookie('myCookie', 'blah blah', 1);

来源:A Comment in php setcookie docs

答案 2 :(得分:2)

这将取决于用户PC在超时后删除cookie。我个人不相信。我将cookie设置为空值,或将其设置为DELETED然后在测试代码中检查是否已设置,然后检查值是否为空白DELETED

答案 3 :(得分:0)

有人可以在测试机器上运行此代码我有点困惑为什么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&lt;&gt; JS cookie不匹配即:2个cookie完全相同但存储不同的数据。

答案 4 :(得分:0)

要通过PHP从浏览器中完全删除Cookie,请尝试使用此代码

$name = 'exists_cookie';
unset($_COOKIE[$name]);
  // Set empty value
$blank = setcookie($name, '', time() - 3600);