Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php $\ COOKIE不获取更新的COOKIE值_Php_Cookies - Fatal编程技术网

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的全部目的。