设置为在会话结束时过期的 Cookie 不能过早 'deleted'

Cookie set to expire on session end cannot be prematurely 'deleted'

我一直在测试 cookie 的创建、修改和删除,遇到了一个我似乎无法解释的 "quirk"。

我可以正常创建 30 天有效期的 cookie:

setcookie("test_cookie", "test_value", time() + (86400 * 30), "/");

然后我可以 "delete" 轻松地制作那个 cookie:

setcookie("test_cookie", "", time() - 3600, "/");

但是,当我创建一个过期时间为 0 的 cookie 时出现了怪癖(即会在浏览器 close/session 结束时过期):

setcookie("test_cookie", "test_value", 0, "/");

我现在无法在不关闭浏览器的情况下手动删除该 cookie!将它的到期时间设置为过去的某个时间不会执行任何操作。给出了什么?

我一直用来测试的整个页面,注释掉我没有使用的行:

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Cookie Test</title>
</head>
<body>
    <?php
    // setcookie("test_cookie", "test_value", time() + (86400 * 30), "/");
    // setcookie("test_cookie", "test_value_updated", time() + (86400 * 30), "/");
    // setcookie("test_cookie", "", time() - 3600, "/");

    // setcookie("test_cookie", "test_value", 0, "/");
    // setcookie("test_cookie", "test_value_updated", 0, "/");
    setcookie("test_cookie", "", time() - 3600, "/");
    print_r($_COOKIE);
    ?>
</body>
</html>

要设置 cookie,请执行以下操作:

setcookie("test_cookie", "test_value", 0, "/");

并删除 cookie:

setcookie("test_cookie");

setcookie("test_cookie", "test_value", 1, "/");