为什么print_r($ _ COOKIE)没有显示存储的所有cookie?

时间:2015-08-10 11:11:48

标签: php cookies printing

我今天发帖是因为我遇到了一些奇怪的事情,并没有找到对该行为的解释(甚至在搜索该论坛和php文档后)。

我在 / Desktop / PHP 中有一个 test.php 文件,其中包含以下代码:

<?php
    setcookie('first_name', 'David', time() + 7*86400, null, null, false, true);
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Testing page</title>
    </head>

    <body>
        <p>
            Hey ! I remember you !<br />
            Your name is <?php echo $_COOKIE['first_name'] !
        </p>

        <p>
            echo '$_COOKIE ';
            print_r($_COOKIE);
        </p>
    </body>
</html>

当我在浏览器中使用MAMP打开该页面时(所以链接是 localhost:8888 / test.php ),这就是我所得到的:

  嘿!我记得你 !   你的名字是大卫!

     

$ COOKIE数组   (       [first_name] =&gt;大卫   )

初看起来似乎很正常,但是,我不明白为什么print_r($ _ COOKIE)没有显示我浏览器上存储的所有cookie?这与我在本地主页上的事实有关,而print_r($ COOKIE)只显示当前域的cookie吗?

提前感谢您的回答!

2 个答案:

答案 0 :(得分:0)

是的,它只会为您提供传递给您脚本的cookie。它们只是属于同一域的cookie。如果它将所有cookie发送到每个站点,那将是一个重大的安全漏洞。

答案 1 :(得分:0)

在浏览器中查找设置Cookie的列表,并检查字段名称,内容,主机,路径,发送,过期。 您的代码行setcookie('first_name', 'David', time() + 7*86400, null, null, false, true);具有Name ='first_name',Content ='David',expires ='7 * 86400秒from now',Path ='no path(in machine)',Host ='no host',发送='任何http(如果您的浏览器尊重真正的条目,我当然不理解这一部分)'。

当我设置一些Cookie时,我会替换nullROOT_PATH的{​​{1}},并在配置php中将这些常量定义为DOMAIN_NAMEdefine('ROOT_PATH',__DIR__);我总是在我的项目中创建的文件,我设置所有常量和这些东西。

因此,define('DOMAIN_NAME', $_SERVER['SERVER_NAME']);会向您显示您正在运行test.php文件的主机中放置的cookie。