【问题标题】:I can see cookie content only in the page has setted it. Why?我只能在设置了它的页面中看到cookie内容。为什么?
【发布时间】:2021-05-30 09:02:09
【问题描述】:

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

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

使用 jquery.ajax 请求运行的 PHP(它向我显示正确的文本):

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'];
}

【问题讨论】:

    标签: php cookies


    【解决方案1】:

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

    这是您的代码的快速修复

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

    更多关于setcookie参数的信息可以在官方PHP documentation找到。

    【讨论】:

    • 快速无痛!谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 2023-03-24
    • 2018-11-15
    相关资源
    最近更新 更多