设置为在会话结束时过期的Cookie不能过早“删除”

时间:2015-03-20 10:41:56

标签: php cookies

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

我可以正常创建一个30天到期的cookie:

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

然后我可以轻松地“删除”该cookie:

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

然而,当我创建一个过期时间为0的cookie时(即将在浏览器关闭/会话结束时到期),就会出现这个怪癖:

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>

1 个答案:

答案 0 :(得分:2)

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

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

并删除co​​okie:

setcookie("test_cookie");

OR

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