【发布时间】:2015-03-25 11:23:57
【问题描述】:
以下是我的测试文件。这就是它们所包含的全部内容。
文件test.php:
<?php
setcookie("test", "test", time() + 3600);
header("Location:test2.php");
文件test2.php:
<?php
if(!isset($_COOKIE['test'])) {
echo 'cookie not set';
} else {
echo 'cookie set';
}
当我尝试显示 test.php 页面时,我得到“cookie not set”。 这快把我逼疯了……
这是我目前检查的内容:
- 我使用 Safari / Chrome / Firefox 进行了测试,
- 我的浏览器接受 cookie,
- 正如您在我的示例中看到的那样,在调用 setcookie 函数之前没有向浏览器发送任何输出,
- 当显示 setcookie 函数的结果时,我得到了 true,
- 它可以在我的本地计算机上运行,但不能在我的服务器上运行,
最后一点让我相信服务器配置有问题?我在共享托管服务器上,所以对此我无能为力。
【问题讨论】:
-
您能否查看您的开发者工具资源选项卡并查看是否存在 cookie?
-
在您打开
<?php标签error_reporting(E_ALL); ini_set('display_errors', 1);后立即将错误报告添加到文件顶部,看看它是否会产生任何结果。 -
@Fred-ii- 我在两个文件中都添加了
error_reporting(E_ALL); ini_set('display_errors', 1);。不会发生错误。 @Darren 也没有在开发者工具中设置 cookie。 -
尝试使用域名,例如
setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1);按照手册php.net/manual/en/function.setcookie.php - 我以前也遇到过这种情况。 -
加上点前缀以确保与子域
if ( substr($domain, 0, 1) != '.' ) $domain = '.'.$domain;(如果它是子域)兼容。另请参阅stackoverflow.com/questions/5258126/…