PHP header_register_callback 函数
最后修改于 2025 年 4 月 4 日
PHP 的 header_register_callback 函数用于注册一个在 header 被发送时调用的回调函数。这对于 header 操作非常有用。
基本定义
header_register_callback 注册一个函数,该函数将在 PHP 开始发送输出之前调用。回调函数可以修改 header。
语法: header_register_callback(callable $callback): bool。成功时返回 true,失败时返回 false。需要输出缓冲。
基本 Header 回调示例
此示例展示了一个简单的回调,它添加了一个自定义 header。
<?php
declare(strict_types=1);
function headerCallback() {
header('X-Custom-Header: MyValue');
}
header_register_callback('headerCallback');
echo "Content with custom header";
该回调在输出开始前添加了一个 X-Custom-Header。这演示了 header_register_callback 的基本用法。回调会自动运行。
条件 Header 修改
此示例根据应用程序逻辑有条件地修改 header。
<?php
declare(strict_types=1);
function conditionalHeader() {
if ($_SERVER['REMOTE_ADDR'] === '127.0.0.1') {
header('X-Debug-Mode: enabled');
}
}
header_register_callback('conditionalHeader');
echo "Content with conditional headers";
该回调检查客户端 IP,并为 localhost 添加一个调试 header。这展示了如何在输出开始前进行动态 header 决策。
多个回调示例
此示例演示了注册按顺序执行的多个回调。
<?php
declare(strict_types=1);
function firstCallback() {
header('X-First: 1');
}
function secondCallback() {
header('X-Second: 2');
}
header_register_callback('firstCallback');
header_register_callback('secondCallback');
echo "Content with multiple callbacks";
回调按照注册顺序执行。此示例添加了两个自定义 header。注册顺序决定了回调的执行顺序。
Header 验证回调
此示例使用回调在 header 发送前进行验证。
<?php
declare(strict_types=1);
function validateHeaders() {
$headers = headers_list();
if (!in_array('Content-Type: text/html', $headers)) {
header('Content-Type: text/html');
}
}
header_register_callback('validateHeaders');
echo "<html><body>Validated content</body></html>";
该回调会检查现有的 header 并添加缺失的 header。这确保了在输出开始前必需的 header 都存在。对于验证很有用。
带回调的输出缓冲
这展示了输出缓冲如何与 header_register_callback 一起工作。
<?php
declare(strict_types=1);
ob_start();
function bufferingCallback() {
header('X-Buffered: yes');
header_remove('X-Powered-By');
}
header_register_callback('bufferingCallback');
echo "Buffered content with modified headers";
ob_end_flush();
输出缓冲必须是活动的,header 回调才能工作。此示例展示了缓冲设置和 header 修改。回调在 flush 前运行。
最佳实践
- 输出缓冲: 始终将输出缓冲与此函数一起使用
- 单一职责: 使回调专注于一项任务
- 顺序很重要: 按所需执行顺序注册回调
- 错误处理: 优雅地处理潜在的回调错误
来源
PHP header_register_callback 文档
本教程通过各种场景下的 header 操作的实际示例,涵盖了 PHP 的 header_register_callback 函数。
作者
列出 所有 PHP 网络函数。