1

为什么我提交表单时 cookie 值没有立即更新?
当我提交表单时,输出的refer_id仍然是旧的,但是当我刷新浏览器时,它改变了,为什么不能立即改变?

<?php 
if(isset($_GET['refer_id'])){
    setcookie('refer_id',$_GET['refer_id'],time()+3600);
}
print_r($_COOKIE);
 ?>
<p>cookie refer_id:<?php echo $_COOKIE['refer_id'];?></p>
<form method="get">
    <input type="text" name="refer_id" />
    <input type="submit" value="submit" />
</form>

在此处输入图像描述

4

1 回答 1

5

想象它是这样的:

  1. 一些客户要求您的页面。您setcookie()并将其发送到标题中。
  2. 该客户端接收该 cookie 标头,将其放入它的 cookie 存储中。
  3. 当发出下一个请求时,该 cookie 将与标头一起发送回服务器。
  4. 服务器看到cookie,将其设置为 superglobal $_COOKIE
  5. 您的服务器使用新指令“更新”客户端的cookie 值。setcookie()
  6. 在响应之前,您读取以输出仍然是最后一个 cookie 值的$_COOKIE值。
  7. 浏览器接收新标头,更新该 cookie 的值,并显示内容,并从服务器读取旧值。

setcookie()不影响$_COOKIE,除非您计算往返。

冲洗,重复。

于 2013-03-12T02:47:27.960 回答