PHP:获取自己的脚本刚刚通过关闭功能发送的http状态代码

标签 php drupal-6

我有一个 shutdown function检查是否刚刚发出重定向。来自 headers_list()我可以发送 header 并查看位置 header 。我的问题是如何弄清楚 header() 中使用了什么 http_response_code功能。 header 列表没有响应代码。

可尝试的示例代码。我没有在示例代码中使用重定向,否则它会循环。主要是我想检测 301 与任何其他类型的重定向。这将在 drupal 内部(通过 drupal_goto 使用 hook_exit );但下面的示例代码显示了这个问题。我无法知道通过 header() 传递给浏览器的状态编号是什么。

<?php
register_shutdown_function('test');

if (mt_rand(0, 1)) {
  header('X-test: junk 1', TRUE, 201);
}
else {
  header('X-test: junk 0', TRUE, 202);
}

exit();


function test() {
  if ($location = test_headers_contain('X-test: ')) {
    // Would like to check the status code that was sent out
    echo $location . '<br>';
    $list = headers_list();
    $txt = str_replace('    ', '&nbsp;&nbsp;&nbsp;&nbsp;', nl2br(htmlentities(print_r($list, TRUE))));
    echo $txt;
  }
}

function test_headers_contain($text) {
  if (function_exists('headers_list')) {
    $list = headers_list();
    if (empty($list)) {
      return FALSE;
    }
    foreach ($list as $header) {
      $info = stristr($header, $text);
      if ($info !== FALSE) {
        return $info;
      }
    }
  }
  return FALSE;
}
?>

这段代码输出这个

X-test: junk 1
Array
(
    [0] => X-Powered-By: PHP/5.2.10
    [1] => X-test: junk 1
)

最佳答案

Revision 302033添加了函数 http_response_code回应那种issue you describe ,但我不确定它何时会包含在版本中。它不在 5.3.4 中。如果您有权访问,则可以构建一个添加了此功能的 PHP 补丁版本。如果没有,您可以向主机上有权访问的任何人请求它。

关于PHP:获取自己的脚本刚刚通过关闭功能发送的http状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4495367/

相关文章:

php - iFrame - 隐藏 url 和 session 不工作

php - 跟踪非现场点击

php - 从 PHP 版本 7.2.0 开始, "Array dereferencing"如何处理 boolean/integer/float/string 类型的标量值?

Drupal:从 db_query 返回 SQL 字符串

Drupal:无法取消设置 js 文件并在主题目录中使用新的 js

drupal - 删除 [nid :n] in nodereference autocomplete

php - 如何对可用集合进行分页 [Laravel 4.2]

javascript - 如何防止 twig 自动转义日语字符?

Drupal:dprint_r() 的输出仅对管理员可见吗?

php - 创建 2 个链接 l() 而不是 drupal 6 的一个以添加 2 个链接类