php返回HTTP状态码

面试时很多人问我这个,记录一下   200是ok,  404表示页面未找到.
HTTP协议状态码,调用函数时候只需要将$num赋予一个下表中的已知值就直接会返回状态了。
<?PHP 
/** 
* HTTP Protocol defined status codes
* HTTP协议状态码,调用函数时候只需要将$num赋予一个下表中的已知值就直接会返回状态了。
* @param int $num
*/ 
function https($num) { 
$http = array ( 
100 => "HTTP/1.1 100 Continue", 
101 => "HTTP/1.1 101 Switching Protocols", 
200 => "HTTP/1.1 200 OK", 
201 => "HTTP/1.1 201 Created", 
202 => "HTTP/1.1 202 Accepted", 
203 => "HTTP/1.1 203 Non-Authoritative Information", 
204 => "HTTP/1.1 204 No Content", 
205 => "HTTP/1.1 205 Reset Content", 
206 => "HTTP/1.1 206 Partial Content", 
300 => "HTTP/1.1 300 Multiple Choices", 
301 => "HTTP/1.1 301 Moved Permanently", 
302 => "HTTP/1.1 302 Found", 
303 => "HTTP/1.1 303 See Other", 
304 => "HTTP/1.1 304 Not Modified", 
305 => "HTTP/1.1 305 Use Proxy", 
307 => "HTTP/1.1 307 Temporary Redirect", 
400 => "HTTP/1.1 400 Bad Request", 
401 => "HTTP/1.1 401 Unauthorized", 
402 => "HTTP/1.1 402 Payment Required", 
403 => "HTTP/1.1 403 Forbidden", 
404 => "HTTP/1.1 404 Not Found", 
405 => "HTTP/1.1 405 Method Not Allowed", 
406 => "HTTP/1.1 406 Not Acceptable", 
407 => "HTTP/1.1 407 Proxy Authentication Required", 
408 => "HTTP/1.1 408 Request Time-out", 
409 => "HTTP/1.1 409 Conflict", 
410 => "HTTP/1.1 410 Gone", 
411 => "HTTP/1.1 411 Length Required", 
412 => "HTTP/1.1 412 Precondition Failed", 
413 => "HTTP/1.1 413 Request Entity Too Large", 
414 => "HTTP/1.1 414 Request-URI Too Large", 
415 => "HTTP/1.1 415 Unsupported Media Type", 
416 => "HTTP/1.1 416 Requested range not satisfiable", 
417 => "HTTP/1.1 417 Expectation Failed", 
500 => "HTTP/1.1 500 Internal Server Error", 
501 => "HTTP/1.1 501 Not Implemented", 
502 => "HTTP/1.1 502 Bad Gateway", 
503 => "HTTP/1.1 503 Service Unavailable", 
504 => "HTTP/1.1 504 Gateway Time-out"  
); 
header($http[$num]); 

?>
@header('HTTP/1.0 404 Not Found');
 
 
 
 
 
### 获取 PHP 中准确的 HTTP 响应状态码PHP 应用开发中,获取准确的 HTTP 员响应状态码是调试和监控服务器行为的重要环节。HTTP 状态码是服务器对客户端请求做出响应时返回的三位数字代码,用于表示请求的结果状态[^1]。PHP 提供了多种方式来获取或设置 HTTP 响应状态码。 #### 使用 `http_response_code()` 函数 该函数可以获取当前响应的状态码,也可以设置新的状态码。若不传入参数,则返回当前的 HTTP 状态码;若传入整数参数(如 500),则会设置相应的状态码返回布尔值表示是否成功。 ```php // 获取当前状态码 $currentStatusCode = http_response_code(); echo "Current status code: " . $currentStatusCode; // 设置状态码为 404 http_response_code(404); ``` 此方法适用于需要动态调整响应状态码的场景,并且能够确保输出正确的 HTTP 状态码[^2]。 #### 通过 `headers_list()` 检查响应头 `headers_list()` 函数可以列出当前脚本发送的所有 HTTP 响应头信息,其中也包括状态码行。开发者可以通过解析这些头部信息获取最终的 HTTP 状态码。 ```php $headers = headers_list(); foreach ($headers as $header) { if (strpos($header, 'HTTP/') === 0 || strpos($header, 'Status:') === 0) { echo "Status line: " . $header; } } ``` 这种方式适合在调试过程中确认实际发送的状态码是否与预期一致,特别是在某些框架或中间件可能修改状态码的情况下非常有用[^3]。 #### 在 CLI 环境下模拟 HTTP 状态码 当在命令行模式下运行 PHP 脚本时,默认不会生成 HTTP 响应头,因此 `http_response_code()` 返回的是空值。如果需要测试状态码逻辑,可以通过模拟环境变量来验证: ```php if (php_sapi_name() == "cli") { // 模拟 Web 环境中的状态码 $_SERVER['REDIRECT_STATUS'] = 200; } $statusCode = isset($_SERVER['REDIRECT_STATUS']) ? intval($_SERVER['REDIRECT_STATUS']) : http_response_code(); echo "Simulated status code: " . $statusCode; ``` 这种方法有助于在非 Web 环境中进行单元测试或功能验证[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值