无法从我网站的任何其他部分访问 Cookie.我该如何解决这个问题


Cookie can't be accessed from any other part of my site. How can I fix this?

我构建PHP网站的方式经常使用诸如

<?php include($_SERVER['DOCUMENT_ROOT'] . "/scripts/create_comment_section.php"); ?>

将一系列单独的页面串成一个整体。也许这可能是以下问题的根源?我一直在阅读教程,用头撞墙一个小时,但无济于事。

在我用来练习编码的网站的根目录(/index.php)中,我定义了一个持续2分钟的cookie。在包含我所有<!doctype><head>内容的文件包含在内之前,我已经定义了它。

summon.endgame.pk/index.php:

<?php
$cookie_name = "user";
$cookie_value = "Anna Cake";
setcookie($cookie_name, $cookie_value, time() + (60 * 2), "/", ".endgame.pk"); // 60 seconds x 2 = 2 mins
?>
<?php include($_SERVER['DOCUMENT_ROOT'] . "/html_head.html"); ?>
<body>
<!-- ✎ background image  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<img src="/img/background-top.jpg" style="position: absolute; left:0px; top:0px; z-index:1">
<!-- ✎ login panel  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<?php include($_SERVER['DOCUMENT_ROOT'] . "/homepage/login.html"); ?>
<?php include($_SERVER['DOCUMENT_ROOT'] . "/homepage/article_intro.html"); ?>
<?php include($_SERVER['DOCUMENT_ROOT'] . "/homepage/article_news.html"); ?>
<?php include($_SERVER['DOCUMENT_ROOT'] . "/html_foot.html"); ?>

我网站上的每个页面都包含文件/homepage/login.html,该文件检查是否已设置 cookie:

<!-- login panel -->
<div class="table1" style="position: absolute; top: -30px; left: 800px; width:400px; height: 200px; z-index: 2; padding: 35px 15px 15px 15px;">
<span class="title1">Login</span>
<?php
if(!isset($_COOKIE[$cookie_name])) {
    echo "Cookie named '" . $cookie_name . "' is not set!";   } 
else {
    echo "Cookie '" . $cookie_name . "' is set!<br>";
    echo "Value is: " . $_COOKIE[$cookie_name];    }
?>
</div>

当我转到我的主页(cookie 首次发送的位置 - index.html)并刷新该页面两次(发送 cookie 并检查它)时,它会完美显示。但是,当我尝试转到我网站的任何其他部分(例如 summon.endgame.pk/summon_chance)并尝试阅读该cookie时....它说它还没有被设置。

这是我第一次使用饼干...我已经阅读了几个小时的教程,我不明白为什么它不能在其他页面上工作,因为我已经在网站的索引中定义了它。

$cookie_value, time() + (60 * 2), "/", ".endgame.pk")

我什至添加了"/"来指定所有子文件夹,并在我的域名之前添加了"."以确保......

请帮忙..堆栈溢出是我最后的手段!!

我发现了我的错误!

cookie 本身编写正确,现在可以工作了。问题是我定义了变量

$cookie_name = "user";
$cookie_value = "Anna Cake";
在一个文件中,

并尝试在一个完全不同的文件中再次使用它们,该文件甚至没有包含第一个文件。而不是尝试再次使用这些相同的变量来检查cookie(它已经完美运行!我已经更改了测试的代码,以查看cookie是否已从以下位置记录

<?php
if(!isset($_COOKIE[$cookie_name])) {
    echo "Cookie named '" . $cookie_name . "' is not set!";   } 
else {
    echo "Cookie '" . $cookie_name . "' is set!<br>";
    echo "Value is: " . $_COOKIE[$cookie_name];    }
?>

<?php
if(!isset($_COOKIE['user'])) {
    echo "Cookie named 'user' is not set!";   } 
else {
    echo "Cookie 'user' is set!<br>";
    echo "Value is: " . $_COOKIE['user'];    }
?>

现在它在我的整个网站上返回"Anna Cake",即使 cookie 仅在索引页中定义。