Php 设置为在会话结束时过期的Cookie不能过早';删除';

Php 设置为在会话结束时过期的Cookie不能过早';删除';,php,cookies,Php,Cookies,我一直在测试cookie的创建、修改和删除,遇到了一个我似乎无法解释的“怪癖” 我可以像往常一样创建一个过期30天的cookie: setcookie("test_cookie", "test_value", time() + (86400 * 30), "/"); 然后我可以轻松地“删除”该cookie: setcookie("test_cookie", "", time() - 3600, "/"); 但是,当我创建一个到期时间为0的cookie(即,将在浏览器关闭/会话结束时到期)时,

我一直在测试cookie的创建、修改和删除,遇到了一个我似乎无法解释的“怪癖”

我可以像往常一样创建一个过期30天的cookie:

setcookie("test_cookie", "test_value", time() + (86400 * 30), "/");
然后我可以轻松地“删除”该cookie:

setcookie("test_cookie", "", time() - 3600, "/");
但是,当我创建一个到期时间为
0
的cookie(即,将在浏览器关闭/会话结束时到期)时,就会出现这种怪癖:

如果不关闭浏览器,我现在无法手动删除该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”)
似乎实际上删除了cookie(虽然它清空了cookie,但它仍然存在)。但是,我现在无法再次更新此cookie?如果您需要再次更新cookie,您只需重新创建它。这就是我的想法。。。但它不起作用?它是空的吗?试着这样做:
if(empty($\u COOKIE[“test\u COOKIE”]){setcookie(“test\u COOKIE”,“test\u value”,time()+3600,”/”)}
n不,它只是空白的。。。真奇怪!
setcookie("test_cookie");
setcookie("test_cookie", "test_value", 1, "/");