cookie 到期时间未设置为在每次浏览器关闭后销毁,但它不起作用
cookie expiry time not set to destroy after each browser close but it is not working
我首先设置了一个 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';
}
?>
首先,您的代码看起来是正确的。正如 setcookie()
的 PHP 文档中所述:
If set to 0, or omitted, the cookie will expire at the end of the session (when the browser closes).
这称为 "session cookie",浏览器关闭时应将其删除。
仔细研究一下,Chrome 和 Firefox 的行为似乎略有不同,具体取决于它们是否配置为在启动时记住打开的选项卡和 windows,这是设计使然。
您提到您正在使用Chrome - 如果Chrome在启动时配置为"Continue where you left off",则在关闭选项卡和浏览器重新启动时可能不会删除会话cookie。[= = = = 15=]
当我选择"Open the New Tab page"时,我可以验证当浏览器关闭时cookie被删除。
这与 Firefox 相同 - 在 Mozilla 支持论坛上有一些额外的信息,其中包含一些关于如何 configure this 的详细信息。
简而言之,您似乎无法依赖 Chrome 或 Firefox 来保证删除会话 cookie。
我首先设置了一个 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';
}
?>
首先,您的代码看起来是正确的。正如 setcookie()
的 PHP 文档中所述:
If set to 0, or omitted, the cookie will expire at the end of the session (when the browser closes).
这称为 "session cookie",浏览器关闭时应将其删除。
仔细研究一下,Chrome 和 Firefox 的行为似乎略有不同,具体取决于它们是否配置为在启动时记住打开的选项卡和 windows,这是设计使然。
您提到您正在使用Chrome - 如果Chrome在启动时配置为"Continue where you left off",则在关闭选项卡和浏览器重新启动时可能不会删除会话cookie。[= = = = 15=]
当我选择"Open the New Tab page"时,我可以验证当浏览器关闭时cookie被删除。
这与 Firefox 相同 - 在 Mozilla 支持论坛上有一些额外的信息,其中包含一些关于如何 configure this 的详细信息。
简而言之,您似乎无法依赖 Chrome 或 Firefox 来保证删除会话 cookie。