每个浏览器关闭后,Cookie到期时间未设置为销毁,但无法正常工作

时间:2018-10-26 17:47:14

标签: php cookies setcookie

我首先要设置一个cookie,当我关闭浏览器时,该cookie应该被销毁了,所以我没有设置任何到期时间。但是,即使关闭浏览器,cookie也不会被破坏。

<?php
session_start();
if(isset($_COOKIE['favcolor']))
{
   echo $_COOKIE['favcolor'];
}
else
{
   $_SESSION["favcolor"] = "green";
   setcookie('favcolor', 'green',0);
   echo 'new cookie and session are set';
}
?>

1 个答案:

答案 0 :(得分:2)

首先,您的代码似乎正确无误。如setcookie()的PHP文档所述:

  

如果设置为0或省略,则cookie将在会话结束时(浏览器关闭时)失效。

这被称为“会话cookie”,应在浏览器关闭时将其删除。

仔细研究一下,看来Chrome和Firefox的行为有所不同,具体取决于它们是否配置为在启动时记住打开的选项卡和窗口,这是设计使然。

您提到您使用的是Chrome-如果Chrome在启动时配置为“从上次退出的地方继续”,则在关闭标签页并重新启动浏览器时,可能不会删除会话Cookie。

enter image description here

当我选择“打开新标签页”时,可以确认关闭浏览器后删除了cookie。

与Firefox相同-在Mozilla支持论坛上还有一些其他信息,以及有关如何configure this的详细信息。

简而言之,您似乎无法依靠Chrome或Firefox保证删除会话cookie。