我在PHP中调用$_COOKIE
函数后立即尝试访问cookie的值(使用setcookie()
)。当我这样做时,登录后$_COOKIE[$cookiename]
没有设置。为什么呢?
if(isset($_SESSION)){
$_SESSION['email']=$username;
$_SESSION['id']=$query['id'];
$_SESSION['name']=$query['name'];
$_COOKIE[$cookiename]=$query['name'];
$cookiename="user";
$cookie_value = "John Doe";
setcookie($cookiename,$cookie_value, time() + (86400 * 30),"/");
if (!$session->Check()){
echo $cookiename ;
}else {
echo $_COOKIE[$cookiename];
}
答案 0 :(得分:2)
这是因为当您调用setcookie()
时,您将cookie附加到当前响应(当前请求完成时)。
$ _COOKIE将在已经设置了cookie标头的请求时有一个值,即cookie被发送到服务器。
所以,当只有#1发生时你在$ _COOKIE中没有任何东西,但是一旦#2发生,你将在$ _COOKIE中有一个值
编辑:手册中提到了您需要的几乎所有内容 http://php.net/manual/en/function.setcookie.php
setcookie()定义了一个与其余部分一起发送的cookie HTTP标头一旦设置了cookie,就可以访问它们 下一页加载$ _COOKIE数组。 Cookie值也可能 存在于$ _REQUEST。