无法从我网站的任何其他部分访问Cookie。我怎样才能解决这个问题?

时间:2015-01-05 05:44:09

标签: php cookies dns

我构建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时......它说它尚未设置。

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

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

我甚至添加了“/”来指定所有子文件夹和“。”在我的域名之前确保......

请帮助.. stackoverflow是我最后的手段!!

1 个答案:

答案 0 :(得分:0)

我发现了我的错误!

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

$cookie_name = "user";
$cookie_value = "Anna Cake";

在一个文件中并尝试在一个完全不同的文件中再次使用它们,这个文件甚至没有包含第一个文件。而不是试图再次使用这些相同的变量来检查cookie(WAS工作正常!)我已经更改了测试代码以查看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仅在索引页面中定义。