我正试图设置一个像这样的cookie:
<?php
$cookie_name = "user";
$cookie_value = "James";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<?php if(!isset($_COOKIE['user'])) { ?>
//Do Something
<?php } ?>
但它没有设置,我使用的是铬,当我检查我的饼干时,它们不存在:(
答案 0 :(得分:1)
来自setcookie
文档:
设置完cookie后,可以在下一页加载
中$_COOKIE
数组时访问它们。 Cookie值也可能存在于$_REQUEST
。
您将无法在初始页面加载时立即访问Cookie。此外,在设置cookie(协议限制)之前,请确保您没有输出任何HTML。
如果您绝对需要立即访问cookie,您可以选择以下几种方法:
header
答案 1 :(得分:1)
$_COOKIE[]
变量。
以下是文档说的内容:
设置完cookie后,可以在下一页加载$ _COOKIE数组时访问它们。 Cookie值也可能存在于$ _REQUEST。
中
但是在设置之后,有很多单词可以立即访问它。
您可以在设置cookie以访问它时手动设置$_COOKIE[]
的值,或者您可以使用如下的中间变量:
<?php
$cookie_name = "user";
$cookie_value = "James";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
$_COOKIE[$cookie_name] = $cookie_value;
?>
if(!isset($_COOKIE['user']))
现在将返回true。
另一个效率低下的解决方案世界是在设置cookie后立即重新加载页面。 像:
$cookie_name = "user";
$cookie_value = "James";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
header("Location: your_script.php");
?>
页面重新加载时,if(!isset($_COOKIE['user']))
将再次返回true。
希望这有帮助! :)
答案 2 :(得分:0)
如评论中所述,cookie在设置它的同一请求中不可见。您需要进行重定向才能访问cookie,例如
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
header('Location: ' . $your_script_location_path);
exit;
此外,支票中的代码
if(!isset($_COOKIE['user'])) {
// Do something
}
只有在未设置cookie时才会执行。