http_response_code()和header()
  0GY0ciDQP24T 2023年11月02日 44 0

1.http_response_code — 获取/设置响应的 HTTP 状态码
向服务器发送成功状态码:http_response_code(200);

返回值
如果提供了response_code,将返回先前的状态码。 如果未提供response_code,会返回当前的状态码。 在 Web 服务器环境里,这些状态码的默认值都是 200

<?php
// 获取当前状态码,并设置新的状态码
var_dump(http_response_code(404));//获取新的状态码
var_dump(http_response_code());
?>

以上例程会输出:

int(200)
int(404)

2.header() 函数向客户端发送原始的 HTTP 报头。

认识到一点很重要,即必须在任何实际的输出被发送之前调用 header() 函数(在 PHP 4 以及更高的版本中,您可以使用输出缓存来解决此问题):
header(string,replace,http_response_code)

header("HTTP/1.0 404 Not Found");
header("Location: http://www.example.com/");
header('Content-type: application/pdf');

header('HTTP/1.1 301 Moved Permanently');
header("HTTP/1.1 404 Not Found");
header("Location: http://www.kongjianjia.com".$_SERVER['REQUEST_URI']);
header("Location:".$_SERVER["SERVER_NAME"]);//$_SERVER["HTTP_HOST"]

// 301 Moved Permanently
header("Location: /foo.php",TRUE,301);

// 302 Found
header("Location: /foo.php",TRUE,302);
header("Location: /foo.php");

// 303 See Other
header("Location: /foo.php",TRUE,303);

// 307 Temporary Redirect
header("Location: /foo.php",TRUE,307);

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf'); file()

header("Cache-Control: no-cache, must-revalidate");

 

<?php
/* Redirect to a different page in the current directory that was requested */
$host = $_SERVER['HTTP_HOST'];
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'mypage.php';
header("Location: http://$host$uri/$extra");
exit;
?>

 

header($_SERVER['SERVER_PROTOCOL'] . ' 200 OK'); //向服务器发送成功状态码200
这里$_SERVER['SERVER_PROTOCOL']就是请求页面时通信协议的名称和版本 例如:HTTP/1.1

header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden');
header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error');

 

<?php
// Test image.
$fn = '/test/foo.png';

// Getting headers sent by the client.
$headers = apache_request_headers();

// Checking if the client is validating his cache and if it is current.
if (isset($headers['If-Modified-Since']) && (strtotime($headers['If-Modified-Since']) == filemtime($fn))) {
// Client's cache IS current, so we just respond '304 Not Modified'.
header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($fn)).' GMT', true, 304);
} else {
// Image not cached or cache outdated, we respond '200 OK' and output the image.
header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($fn)).' GMT', true, 200);
header('Content-Length: '.filesize($fn));
header('Content-Type: image/png');
print file_get_contents($fn);
}

 

3.get_headers — 取得服务器响应一个 HTTP 请求所发送的所有标头

说明
​​​get_headers ( string $url [, int $format = 0 ] ) : array​​get_headers() 返回一个数组,包含有服务器响应一个 HTTP 请求所发送的标头。

<?php
$url = 'http://www.example.com';
print_r(get_headers($url));
print_r(get_headers($url, 1));
?>

以上例程的输出类似于:
Array
(
[0] => HTTP/1.1 200 OK
[1] => Date: Sat, 29 May 2004 12:28:13 GMT
[2] => Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
[3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
[4] => ETag: "3f80f-1b6-3e1cb03b"
[5] => Accept-Ranges: bytes
[6] => Content-Length: 438
[7] => Connection: close
[8] => Content-Type: text/html
)

Array
(
[0] => HTTP/1.1 200 OK
[Date] => Sat, 29 May 2004 12:28:14 GMT
[Server] => Apache/1.3.27 (Unix) (Red-Hat/Linux)
[Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT
[ETag] => "3f80f-1b6-3e1cb03b"
[Accept-Ranges] => bytes
[Content-Length] => 438
[Connection] => close
[Content-Type] => text/html
)

 

4.apache_request_headers — 获取全部 HTTP 请求头信息
获取当前请求的所有请求头信息

<?php
$headers = apache_request_headers();

foreach ($headers as $header => $value) {
echo "$header: $value <br />\n";
}
?>
以上例程的输出类似于:

Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0
Host: www.example.com
Connection: Keep-Alive

 

5.apache_response_headers ---获得全部 HTTP 响应头信息。

<?php
print_r(apache_response_headers());
?>

Array
(
[Accept-Ranges] => bytes
[X-Powered-By] => PHP/4.3.8
)

 


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: HP服务器阵列 下一篇: nginx location指令详解
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  IjoZzDAdQBm4   2023年11月12日   20   0   0 apache禅道
0GY0ciDQP24T
最新推荐 更多