我到处搜索,但找不到任何有关此的信息。
情况如下:
我正在使用 PHP 文件作为我的网站空间的“HeaderName”:
.htaccess 具有以下内容:
Options +Indexes
HeaderName /.resource/header.php
在 header.php 中,我包括(首先,在回显任何数据之前)一个小包含,用于检查参数的存在并设置一个 cookie:
if (isset($_GET['css_style']) && $_GET['css_style'] != "") {
$css_style = $_GET['css_style'];
if (setcookie('css_style', $css_style, 0, "/", "xxx.xxxx.xxx") !== false) {
echo "<!-- cookie set! ".$css_style." -->";
} else {
echo "<!-- cookie NOT set! ".$css_style." -->";
}
}
现在,我在同一站点上的其他 PHP 页面中使用这个片段,在任何目录中,cookie 总是在我期望的时候设置。它列在浏览器的 cookie 列表中并包含所需的值。
但是,当在 header.php 中作为自动索引的一部分执行相同的脚本时,我会得到“cookie set”输出,所以我知道正确的条件都适用,但是浏览器的 cookie 列表中不存在 cookie。如果我直接调用 header.php ,那么 cookie 会被设置并出现在浏览器的列表中。
所以我的问题是: Apache 是否做了一些可能阻止 cookie 被丢弃的事情?该站点在托管环境中的 Apache 上运行,但我无权访问中央服务器配置。
我尝试了各种不同的方法来设置 cookie,使用默认值,过期时间为 0 或 time() + 3600*24,有和没有路径和域,没有运气。我难住了。特别是因为它适用于与我正在查看的索引位于同一目录中的常规文件。