gpt4 book ai didi

php - $_COOKIE[] 似乎没有反射(reflect)设置后的变化

转载 作者:可可西里 更新时间:2023-10-31 22:16:24 24 4
gpt4 key购买 nike

我不记得过去使用 Cookies 时遇到过很多问题,但我一直在尝试并遇到了一些意想不到的结果。

(我在本地主机上运行,​​因此我的域设置)

<?php
$sessionCookie = rand();
setcookie("crav_auto_login_cookie", $sessionCookie, false,"/crav/", false);
echo "Cookie Set<br/>";
echo "Cookie equals: ".$_COOKIE["crav_auto_login_cookie"]."<br/>";
echo "should equal: ". $sessionCookie;
?>

这将产生以下输出:

曲奇饼集
Cookie 等于:457718770
应该等于:318511886

我显然遗漏了一些东西,但不确定为什么值不同。是不是因为 cookie 是在页面调用时加载的,$_COOKIE["crav_auto_login_cookie"] 返回的是打开页面时调用的实例的结果,而不是反射(reflect)新设置的值?如果是这样,那为什么呢?

最佳答案

setcookie设置 header 以发送回客户端以设置 cookie。新 cookie 将无法在 $_COOKIE 中访问数组(其中包含从客户端发送的 cookie)直到下一个请求。

以下是用户访问您的页面时事件的简化进程:

  1. 用户的浏览器向您的服务器发送一个请求。此请求包含 header ,包括为您的域的该用户设置的 cookie。 PHP根据这个请求中的数据填充$_COOKIE(以及$_GET$_POST等)数组。<
  2. 服务器解析用户的请求,并设置一个响应。此响应以响应 header 开头(包括您自己通过 header 设置的任何 header ,以及通过 setcookie 设置的 cookie header )。所有 header 必须先于任何页面输出(您可能遇到过,如果您在开始输出页面内容后尝试发送更多 header ,PHP 会报错)。
  3. 服务器发送页面内容(实际上,标题和内容是同一传输的一部分)。
  4. 服务器和客户端之间的连接关闭(为了讨论的目的,让我们忽略 AJAX)。
  5. 客户端解析它收到的 header 和内容,根据需要设置 cookie,并呈现页面(实际上,这很可能在接收页面的同时发生)。

因此,当客户端接收并处理 set-cookie header 时,客户端已经完成与服务器的通信,这就是 cookie 直到下一个请求才会出现在 PHP 中的原因。

关于php - $_COOKIE[] 似乎没有反射(reflect)设置后的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3605402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com