为什么这个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后首次重新加载时,它不会显示。
答案 0 :(得分:2)
setcookie()
将始终成功创建Cookie(请参阅评论中的Gumbo链接)。它没有从浏览器获得关于是否被接受的反馈。您需要设置一个标志,显示您尝试设置cookie,然后检查是否在新页面请求中获取该cookie。只有这样,当它不存在时,你才能确定cookie是否被接受。