为什么我提交表单时 cookie 值没有立即更新?

lin*_*ing 1 php cookies

为什么我提交表单时 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>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Jar*_*ish 5

想象一下:

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

setcookie()不会影响$_COOKIE,除非你把往返算回来。

冲洗,重复。