$ _COOKIE无法获取更新的cookie值

时间:2013-11-16 07:29:52

标签: 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['candidate_id'])){
        echo "from cookie";
        echo $candidate_id= $_COOKIE['candidate_id'];exit;  
    }
    else{
        echo "not from cookie";
        echo $candidate_id= $row_id['id'];exit;
    }

第一次提供正确的输出 -

 288not from cookie288

并在控制台中

candidate_id=288; PHPSESSID=kfpjvl9j4rluh1stjdjcijgi75 

但如果我再次运行代码,我会得到以下输出

289from cookie288

并在控制台中

candidate_id=289; PHPSESSID=kfpjvl9j4rluh1stjdjcijgi75 

这意味着,在第二次运行时,正在修改cookie值,但$_COOKIE['candidate_id']未获取更新的值。但为什么呢?

1 个答案:

答案 0 :(得分:1)

$_COOKIE根据用户请求中的cookie进行初始化。调用setcookie()时未更新。

可以通过这样做来伪造它:

function mySetCookie($name, $value, $time) {
    setcookie($name, $value, $time);
    $_COOKIE[$name] = $value;
}

然后调用mySetCookie(),无论你在哪里调用setcookie()。这可能是错误的 - 我没有测试过它,并且相当肯定它会在某些配置中遇到问题。