在为 Apache 索引使用自定义标头时设置 PHP cookie


Settng PHP cookies while using custom header for Apache Indexes

我到处搜索过,但找不到任何信息。

情况如下:

我正在使用一个PHP文件作为我的网络空间的"标题名称":

.htaccess 具有以下功能:

Options +Indexes
HeaderName /.resource/header.php

在标头中.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,有和没有路径和域,没有运气。我被难住了。特别是因为它适用于与我正在查看的索引位于同一目录中的常规文件。

你想通过

查询参数决定是否要发送一个cookiemod_index创建文本/*,但没有标题

您可以使用mod_headers发送 Cookie:

http://httpd.apache.org/docs/current/mod/mod_headers.html

和条件发送的mod_setenfif:

http://httpd.apache.org/docs/current/mod/mod_setenvif.html