Setcookie()总是返回true,即使浏览器cookie被禁用


setcookie() always returns true, even when browser cookies are disabled

为什么这个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.");
}

更新:i tried this:

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,但是显示"No Cookie found"。重新加载一次后,它找到Cookie并对其进行print_r。为什么要装一次子弹?在setcookie()调用之前我没有发送任何东西。Cookie已设置,但在删除/启用Cookie后第一次重新加载时未显示

setcookie()总是会成功创建cookie,除非头已经被发送了(参见评论中的Gumbo链接)。它不会从浏览器那里得到是否被接受的反馈。您需要设置一个标志,显示您尝试设置cookie,然后检查是否在新的页面请求中获得该cookie。只有这样,当cookie不存在时,您才能确定该cookie未被接受。