php - 设置为在 session 结束时过期的 Cookie 不能提前过期 'deleted'

标签 php cookies

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

我可以像平常一样创建一个有效期为 30 天的 cookie:

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

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

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

但是,当我创建一个过期时间为 0 的 cookie(即在浏览器关闭/ 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, "/");

关于php - 设置为在 session 结束时过期的 Cookie 不能提前过期 'deleted',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29164635/

相关文章:

session - MVC5 OWIN 身份验证持久性在本地工作,但发布后很快就会超时

javascript - SameSite 警告 Chrome 77

javascript - 使用 jQuery Cookie 显示隐藏内容

security - csrf 攻击和双重提交的 cookie

php - 如何从在 php 中转换为数组的对象中检索值?

javascript - JQuery 模态对话框多重提交

php - Laravel 集合键修改

未在 iOS Safari 或 Chrome 中设置或发送请求的 Cookie 适用于所有 Android 和桌面浏览器

php - 使用 $_POST 参数创建表

php - 在 DOMpdf 目录外使用 DOM PDF 创建 pdf