有没有办法快速获得cookie响应?

时间:2012-04-06 05:52:13

标签: php

我在页面 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),则内容值不会快速更改。如果有新值,我必须再次刷新它。

这是一个图片示例:

Cookie Problem

1 个答案:

答案 0 :(得分: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()会向此响应中的broswer发送Cookie标头。由于请求在响应之前,您需要等待下一个请求才能看到您刚设置的cookie。上面的代码通过假装我们刚刚发送的cookie在此请求中收到来解决这个问题。