我只能在已设置的页面中看到 cookie 内容。为什么?

I can see cookie content only in the page has setted it. Why?

不知道以前有没有人问过,这个问题不知道搜什么。 我有一个包含表单和 AJAX 请求的页面。如果用户存在,PHP 代码会异步检查,并在用户请求自动访问时设置 cookie。 cookie 已设置,代码似乎运行良好。如果我尝试使用登录表单读取同一页面中的 cookie 内容(刷新后,这是正常的 - 我知道),我可以看到它。但是当我尝试从另一个页面读取相同的 cookie 内容时,cookie 不存在。就像没有设置一样。这怎么可能?

为了进行测试,我还在 jquery 脚本收到成功响应后停用了 JS 重定向,但这并没有解决问题。

PHP 与 jquery.ajax 请求一起运行(它向我显示了正确的文本):

setcookie("access", $string, time()+31536000);
if(isset($_COOKIE['access'])) echo "Cookie exists.<br>";
echo "Cookie content: ".$_COOKIE['access'];

connection.php在其他网站页面调用(cookie好像是空的或不存在的):

require_once("connection.php");

if(isset($_COOKIE["access"]))
{
  echo "I'm in!<br>";
  echo "Cookie content: ".$_COOKIE['access'];
}

setcookie 函数接受名为 $path 的第四个参数,它限制了 cookie 的访问位置。默认情况下 $path 是设置 cookie 的页面。相反,如果您希望从所有页面都可以访问 cookie,则需要将 $path 参数设置为域的根目录,因此 /.

这是对您的代码的快速修复

setcookie("access", $string, time()+31536000, "/");

更多关于setcookie参数的信息可以参考官方PHP documentation