在 setcookie() 之后立即访问 $_COOKIE

2022-08-30 08:06:36

我试图在PHP中调用函数后立即访问cookie的值(使用)。当我这样做时,没有设置。为什么?$_COOKIEsetcookie()$_COOKIE['uname']

但请注意,这是在下次执行脚本时(如在页面刷新后)按预期方式设置的。$_COOKIE['uname']

setcookie('uname', $uname, time() + 60 * 30);
echo "Cookie value: " . $_COOKIE['uname'];

答案 1

在将响应发送回客户端之前,不会设置 Cookie,并且在 PHP 中不可用,直到之后客户端发出的下一个请求。

但是,当您在脚本中设置 Cookie 时,您可以执行以下操作:

setcookie('uname', $uname, time()+60*30);
$_COOKIE['uname'] = $uname;

答案 2

$_COOKIE在页面加载时设置,由于 Web 的无状态性质。如果要立即访问,可以自行设置或使用中间变量。$_COOKIE['uname']

例如:

if (isset($_COOKIE['uname'])) {
    // get data from cookie for local use
    $uname = $_COOKIE['uname'];
}
else {
    // set cookie, local $uname already set
    setcookie('uname', $uname, time() + 1800);  
}

推荐