检查 PHP 中已设置的响应标头(在发送之前)

问题描述 投票:0回答:1

我正在尝试找到一种方法来检查已由 PHP 设置的标头。示例:

<?php
header('Location: https://www.google.fr');

// Later in the code
$location = get_header('Location');

显然,

get_header
函数不存在,我找不到访问已设置标头的方法。

这可能吗?

评论后编辑:

headers_sent
不是我正在寻找的功能。此函数检查标头是否已发送到客户端。

php
1个回答
0
投票

headers_list()
是此任务的函数,但它返回整个标头。您需要解析标头才能找到您想要的标头:

function get_header($hdr) {
 $hFull = headers_list();
 $hList = array();
 foreach ($hFull as $hEntry) {
  $hAt = strpos($hEntry, ':');
  if ($hAt === false)
   $hList[strtolower(trim($hEntry))] = true;
  else
   $hList[strtolower(trim(substr($hEntry, 0, $hAt)))] = trim(substr($hEntry, $hAt + 1));
 }
 $hFind = strtolower(trim($hdr));
 if (!array_key_exists($hFind, $hList))
  return false;
 return $hList[$hFind];
}

如果标头不存在,函数将返回

false

如果标头存在但没有值,该函数将返回一个空字符串 (
""
)。
如果标头存在但没有冒号(这在大多数标准 PHP 安装中应该是不可能的,因为
headers_list()
应该删除此类标头),该函数将返回
true

© www.soinside.com 2019 - 2024. All rights reserved.