我今天发帖是因为我遇到了一些奇怪的事情,并没有找到对该行为的解释(甚至在搜索该论坛和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吗?
提前感谢您的回答!
答案 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时,我会替换null
和ROOT_PATH
的{{1}},并在配置php中将这些常量定义为DOMAIN_NAME
和define('ROOT_PATH',__DIR__);
我总是在我的项目中创建的文件,我设置所有常量和这些东西。
因此,define('DOMAIN_NAME', $_SERVER['SERVER_NAME']);
会向您显示您正在运行test.php文件的主机中放置的cookie。