ZetCode

PHP http_response_code 函数

最后修改于 2025 年 4 月 4 日

PHP 的 http_response_code 函数用于获取或设置 HTTP 响应状态码。它对于正确的 HTTP 通信至关重要。

基本定义

http_response_code 设置或检索 HTTP 响应码。在设置新的状态码时,它会向客户端发送正确的标头。

语法:http_response_code(int $response_code = null): int|bool。如果未提供参数,则返回当前代码;在设置代码时,则返回 true/false。

设置 404 Not Found 响应

此示例演示了为丢失的资源设置 404 状态。

not_found.php
<?php

declare(strict_types=1);

http_response_code(404);
echo "The requested resource was not found";
exit;

这会在输出内容之前设置正确的 404 状态。浏览器和爬虫会理解这意味着资源不存在。在设置错误代码后始终退出,以防止进一步执行。

获取当前响应码

这显示了如何检索当前的 HTTP 响应状态码。

get_code.php
<?php

declare(strict_types=1);

$code = http_response_code();
echo "Current HTTP response code: $code";

当不带参数调用时,它返回当前状态码。如果未设置任何代码,则默认为 200。这对于调试和日志记录很有用。

API 错误响应

此示例在 JSON API 响应中显示了正确的错误处理。

api_error.php
<?php

declare(strict_types=1);

header('Content-Type: application/json');
http_response_code(400);

echo json_encode([
    'error' => true,
    'message' => 'Invalid request parameters'
]);
exit;

API 应使用正确的 HTTP 状态码以及错误消息。这会设置 400 (Bad Request) 并带有 JSON 错误负载。请始终为 API 设置 content-type 标头。

使用 301 状态码进行重定向

此示例演示了使用 HTTP 301 状态码进行永久重定向。

redirect.php
<?php

declare(strict_types=1);

http_response_code(301);
header('Location: https://new.example.com/page');
exit;

301 重定向告知浏览器和搜索引擎该更改是永久性的。必须包含 Location 标头。重定向标头后始终退出。

自定义维护页面

此示例显示了一个带有 503 Service Unavailable 状态的维护页面。

maintenance.php
<?php

declare(strict_types=1);

http_response_code(503);
header('Retry-After: 3600'); // 1 hour
?>
<!DOCTYPE html>
<html>
<head>
    <title>Maintenance</title>
</head>
<body>
    <h1>Down for Maintenance</h1>
    <p>We'll be back soon!</p>
</body>
</html>

503 表示临时不可用。Retry-After 建议何时重试。这对于计划的维护时段很有用。可以包含 HTML 内容。

最佳实践

来源

PHP http_response_code 文档

本教程通过实际示例涵盖了 PHP 的 http_response_code 函数,适用于 Web 开发和 API 响应。

作者

我叫 Jan Bodnar,是一名充满激情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直撰写编程文章。至今,我已创作了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有超过十年的经验。

列出 所有 PHP 网络函数