【发布时间】:2013-03-12 10:47:27
【问题描述】:
为什么我提交表单时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>
【问题讨论】:
-
客户端渲染页面后才会设置cookie。提交表单,然后刷新页面,您应该会看到更新后的值。
-
您正在读取服务器上的 cookie;当您
setcookie()时,您正在向浏览器发送更新,然后浏览器必须将其呈现给服务器。因此,当您在页面上读取它时,您正在读取已经提供给服务器的静态$_COOKIE值。