【问题标题】:Clear previously set headers php清除以前设置的标头php
【发布时间】:2012-03-26 23:37:48
【问题描述】:

我想知道是否可以清除header_list()中存储的当前信息

if(headers_sent()){
    foreach(headers_list() as $header){
        header_remove($header);
    }
}
var_dump(headers_list());

【问题讨论】:

  • 标头发送后?
  • 如果发送了标题,删除它们(如果可以的话)没有多大意义,因为......它们已经发送了。
  • 可能根据php.net ,但仅限于版本 5.3.0 - 你甚至可以删除 php 本身生成的标头
  • 这可能只会在产生任何非标题输出之前起作用......(因为一旦你刷新任何东西,标题就已经出现在浏览器中)

标签: php http-headers


【解决方案1】:

headers_sent 表示删除标头为时已晚。它们已经发送。因此是函数的名称。

您要专门检查标头是否已发送。然后你就知道修改它们是安全的。

if (!headers_sent()) {
  foreach (headers_list() as $header)
    header_remove($header);
}

【讨论】:

  • foreach 不再需要。看我的回答
【解决方案2】:

要删除它们很简单:

if ( ! headers_sent() ) {
    header_remove();
}

不需要循环。如果您不向header_remove 传递参数,它会删除PHP 设置的所有标头。

【讨论】:

    【解决方案3】:

    只有当标题尚未发送时,您才能删除它们。如果headers_senttrue,则标头已经消失,您无法再取消设置。

    【讨论】:

      【解决方案4】:

      一旦发送了标头,我们就无法清除它。在 php.ini 文件中开启 output_buffering 的最佳解决方案。

      output_buffering = On
      

      【讨论】:

      • 然后你可以召回并删除它们?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-23
      相关资源
      最近更新 更多