【问题标题】:setcookie() always returns true, even when browser cookies are disabledsetcookie() 始终返回 true,即使禁用了浏览器 cookie
【发布时间】:2014-08-14 19:25:43
【问题描述】:

为什么这个 if 语句总是正确的?即使我在浏览器中禁用 cookie,它也会告诉我“cookie 已设置”。 print_r 打印空数组,但它应该说“不能设置 Cookie,请允许 cookie。”

我的代码有什么问题?

if (setcookie("Testcookie", "values of cookie", time()+3600*24))   // 1h*24 = 24hours
   {
        echo ("Cookie was set. ");
        print_r ($_COOKIE);
} else {
        echo("No Cookie could be set, please allow cookies.");
}

更新:我试过这个:

setcookie("Testcookie", "values of cookie", time()+3600*24);    // 1h*24 = 24hours

if ((isset($_COOKIE)) && (!empty($_COOKIE))) { print_r($_COOKIE);} else {echo("No Cookie found.");}

这会正确设置 Cookie,但它会显示“未找到 Cookie”。重新加载后,它会找到 Cookie 并 print_r 它。为什么需要重新加载一次?我之前没有发送任何 setcookie() 调用。 Cookie 已设置,但在删除/启用 Cookie 后首次重新加载时未显示。

【问题讨论】:

标签: php cookies


【解决方案1】:

setcookie() 将始终成功创建 cookie,除非标头已发送 (see Gumbo's link in the comments)。它不会从浏览器获得关于它是否被接受的反馈。您需要设置一个标志,表明您尝试设置 cookie,然后检查您是否在新页面请求中获取该 cookie。只有这样,当 cookie 不存在时,您才能确定 cookie 未被接受。

【讨论】:

    猜你喜欢
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 2019-01-29
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多