setcookie()始终返回true,即使禁用了浏览器cookie也是如此

时间:2014-08-14 19:25:43

标签: php cookies

为什么这个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并打印它。为什么需要重新加载?我之前没有发送任何setcookie()调用。 Cookie已设置,但在删除/启用Cookie后首次重新加载时,它不会显示。

1 个答案:

答案 0 :(得分:2)

除非已经发送了标题,否则

setcookie()将始终成功创建Cookie(请参阅评论中的Gumbo链接)。它没有从浏览器获得关于是否被接受的反馈。您需要设置一个标志,显示您尝试设置cookie,然后检查是否在新页面请求中获取该cookie。只有这样,当它不存在时,你才能确定cookie是否被接受。