header()

1. 定义

该函数用于向浏览器发送原生的HTTP头。无返回值。

注:

  • 在调用该函数之前不能有任何输出。
  • 2. 语法

header ( string $string [, bool $replace = true [, int $http_response_code ]] ) : void

3. 参数说明

参数 可选性 数据类型 描述
$string 必需 字符串 HTTP头
$replace 可选 布尔值 是否用后面的HTTP替换前面相同类型的头,默认为TRUE,会替换
$http_response_code 可选 整型 强制指定HTTP的响应码,同时$string的值不能为空

其中,$string有两种特殊的头:

  • HTTP/开头:将被用来计算将要发出的HTTP状态码
  • Location:开头:不仅将报文发送能够给服务器,还将浏览器重定向(Redirect),返回一个302的状态码(除非状态码在重定向之前被设置为2013XX

4. 示例

<?php

// header()
// 用于向浏览器发送原生的HTTP头。无返回值
// 请注意,该示例请逐个尝试(运行其中一个时注释掉其余部分),并且只能在服务器下运行(不能在命令行中运行)

/* 向浏览器输出一张图片 */
ob_start();
$data = file_get_contents('https://www.jisuapi.com/upload/image/201904/09071407_10238.jpg?v=20160624');
header('Content-type:image/jpeg;');// header()函数在使用前不能有任何字符输出,可以使用 ob_end_clean() 函数进行缓存清理
echo $data;
ob_end_clean();

/* 下载一个文件 */
header('Content-type:text/html');
header('Content-Disposition: attachment; filename="test.php"');// attachment 表明该文件是一个附件,用以下载
$filepath = './ip.php';
readfile($filepath);// 下载的文件:需要读取,否则会下载一个空文件

/* 404 */
header('HTTP/1.1 404 Not Found');

/* 重定向:在 header() 函数之前不能有任何输出,如果想在跳转前输出提示,可使用 refresh,如下 */
header("refresh:3;url='web_color.php'");
echo "3 秒后将被重定向...<br><a href='web_color.php'>直接跳转</a>";

/* 直接跳转 */
header('Location:web_color.php');

5. 延展阅读