Php $\ COOKIE不获取更新的COOKIE值
考虑下面的代码片段-Php $\ COOKIE不获取更新的COOKIE值,php,cookies,Php,Cookies,考虑下面的代码片段- if(some_condition){ echo $candidate_id= $row_id['id']; setcookie("candidate_id", $candidate_id, time()+3600); echo "<script>console.log(document.cookie)</script>"; } if(isset($_COOKIE['candid
if(some_condition){
echo $candidate_id= $row_id['id'];
setcookie("candidate_id", $candidate_id, time()+3600);
echo "<script>console.log(document.cookie)</script>";
}
if(isset($_COOKIE['candidate_id'])){
echo "from cookie";
echo $candidate_id= $_COOKIE['candidate_id'];exit;
}
else{
echo "not from cookie";
echo $candidate_id= $row_id['id'];exit;
}
在控制台中
candidate_id=288; PHPSESSID=kfpjvl9j4rluh1stjdjcijgi75
candidate_id=289; PHPSESSID=kfpjvl9j4rluh1stjdjcijgi75
但是如果我再次运行代码,我会得到以下输出
289from cookie288
在控制台中
candidate_id=288; PHPSESSID=kfpjvl9j4rluh1stjdjcijgi75
candidate_id=289; PHPSESSID=kfpjvl9j4rluh1stjdjcijgi75
这意味着,在第二次运行时,cookie值正在被修改,但是
$\u cookie['candidate\u id']
没有获取更新的值。但是为什么呢?$\u COOKIE
是根据用户请求中的COOKIE初始化的。它不会通过调用setcookie()
进行更新
你可以通过这样做来伪装它:
function mySetCookie($name, $value, $time) {
setcookie($name, $value, $time);
$_COOKIE[$name] = $value;
}
然后在调用setcookie()的任何地方调用mySetCookie()。不过,这可能是有问题的——我还没有测试过它,并且相当肯定它在某些配置中会遇到问题。在setcookie之前取消设置cookie会破坏在这里设置cookie的全部目的。