正如我在评论中所说的那样,根据您的描述(尽管相当模糊且不太容易理解),我认为问题可能是您试图在将 cookie 发送到服务器之前对其进行读取。
cookie 的工作方式如下:
- 你提出请求
- 服务器将 cookie 标头发送回客户端
- 页面加载 - 在此页面加载时 Cookie对 PHP不可见
- 刷新
- 客户端向服务器发送 cookie 标头
- 服务器收到 cookie 标头,因此 PHP 可以读取它
- 页面加载 - Cookie在此处可见。
如果您还没有尝试过,请再次刷新!
由于您想在设置它的同时读取它,只需存储您设置的值并使用它。或者(尽管这是未经测试的),您可以在$_COOKIE
数组中手动设置它。
所以是这样的:
setcookie("helloworld", .. );
$_COOKIE['helloworld'] = $value;
然后就可以正常阅读了。请注意,我真的不建议覆盖自动超全局的值(对于$_REQUEST
, $_POST
,$_GET
等也是如此),而是建议您只存储您正在设置的值并使用它。
另一种方法是使用“网关”的形式,这意味着您将在网关页面上设置 cookie,然后它将继续将您重定向到下一页。
例如,假设您的流程如下:login.php
-> account.php
。而不是将您的登录表单直接发布给account.php
您有 2 个选项。
选项 1:POST 回 login.php,设置 cookie,然后重定向到account.php
. 选项 2:有一个网关,例如logincheck.php
POST 到那个,设置 cookie,然后重定向到account.php
.
这样,account.php
总能看到你的cookie。