PHP函数之header:发送HTTP响应头信息
header函数是PHP中用来发送HTTP响应头信息的函数,它的作用是告诉浏览器或其它客户端如何解释接收到的信息,例如采用何种编码方式、类型、缓存等等。
语法
header(string $string, bool $replace = true, int $http_response_code = 0) : void
参数
string:表示要发送的HTTP响应头信息,格式为“头信息名: 值”,例如Content-Type: text/html。注意,此处头信息名与值之间需要用冒号(:)隔开,并且这个字符串必须是ASCII编码的。
replace:指示是否要替换原有的HTTP头。默认为true,即替换原有头信息,若是false,则会在原有头信息后添加新的。
http_response_code:HTTP状态码。默认为0,即没有设置状态码。PHP 4.3版本以上才支持此参数。
示例
1. 下面是设置Content-Type头信息的例子:
header('Content-Type: text/html; charset=utf-8');
echo '编码测试';
说明:
此处是设置输出类型为"text/html",同时指定编码方式为"utf-8"。
2. 下面是设置重定向头信息的例子:
header('Location: http://www.example.com/');
exit; //必须的,否则后面的内容仍会被输出。
说明:
上面的代码会使浏览器将页面重定向到指定的网址。exit;语句是必要的,因为在发送重定向头信息之后,PHP脚本还会继续执行,若不加上exit;会继续输出内容。
3. 下面是设置缓存头信息的例子:
header('Cache-Control: max-age=3600, must-revalidate');
echo '测试缓存';
说明:
此处的头信息用来告诉浏览器和缓存服务器,在缓存有效期内,可以直接从缓存读取数据而不必重新请求。其中max-age=3600表示缓存有效期为1小时,must-revalidate表示在缓存过期后必须重新验证缓存的有效性。
4. 若要设置状态码,可以使用http_response_code参数,例如:
header('HTTP/1.1 404 Not Found');
echo '页面不存在';
说明:
此处用来设置404状态码,表示页面不存在。
需要注意的是,若在头信息之前已经有输出(即echo、print、HTML等),则不能再使用header函数设置头信息。此时可以使用ob_start函数开启缓冲区,通过ob_end_flush函数输出缓冲内容并清除缓冲。例如:
<?php
ob_start();
echo '页面内容';
header('Content-Type: text/html; charset=utf-8');
ob_end_flush();
?>
以上就是header函数的使用方法和一些常见的应用场景,需要根据实际需求选择不同的头信息来进行设置。需要注意的是,头信息的正确设置可以提高网站的访问速度和安全性,因此在应用中需要特别注意。
