0

我在页面test_cookie.php中编写了一个简单的代码来处理 cookie。

if(isset($_GET['data'])) { 
    setcookie('test_cookie', $_GET['data'], time()+60*60*24*30); 
}
echo 'Cookie name is: ' . $_COOKIE['test_cookie'];

现在,一旦将 cookie 设置为某个值,并且我将值设置为其他值(使用 $_GET),那么内容值不会很快改变。如果出现新值,我必须再次刷新它。

这是一个图片示例:

饼干问题

4

1 回答 1

3

是的 - 只需在您调用时明确设置setcookie()

if(isset($_GET['data'])) {
    setcookie('test_cookie', $_GET['data'], time()+60*60*24*30); 
    $_COOKIE['test_cookie'] = $_GET['data'];
}
echo 'Cookie name is: ' . $_COOKIE['test_cookie'];

您的代码无法“快速”运行的原因是因为$_COOKIE包含浏览器在当前请求中发送的 cookie,同时setcookie()在此响应中向浏览器发送 cookie 标头。由于请求先于响应,因此您需要等待下一个请求才能看到您刚刚设置的 cookie。上面的代码通过假装我们刚刚发送的 cookie 是在这个请求中接收到的来解决这个问题的。

于 2012-04-06T05:53:33.597 回答