(PHP 4, PHP 5, PHP 7)
header - 发送原生 HTTP 头
1 void header ( string $string [, bool $replace = true [, int $http_response_code ]] )
参数:
string
有两种特别的头. 第一种以 "HTTP/" 开头的 (case is not significant), 将会被用来计算出将要发送的 HTTP 状态码. 例如在 Apache 服务器上用 PHP 脚本来处理不存在文件的请求(使用 ErrorDocument 指令), 就会希望脚本响应了正确的状态码.
- <?PHP
- header("HTTP/1.0 404 Not Found");
- ?>
第二种特殊情况是 "Location:" 的头信息. 它不仅把报文发送给浏览器, 而且还将返回给浏览器一个 REDIRECT(302)的状态码, 除非状态码已经事先被设置为了 201 或者 3xx.
- <?PHP
- header("Location: http://www.example.com/"); /* Redirect browser */
- /* Make sure that code below does not get executed when we redirect. */
- exit;
- ?>
- replace
可选参数 replace 表明是否用后面的头替换前面相同类型的头. 默认情况下会替换. 如果传入 FALSE, 就可以强制使相同的头信息并存. 例如:
- <?PHP
- header('WWW-Authenticate: Negotiate');
- header('WWW-Authenticate: NTLM', false);
- ?>
- http_response_code
强制指定 HTTP 响应的值. 注意, 这个参数只有在报文字符串 (string) 不为空的情况下才有效.
header 函数的常见用处有以下几点:
1, 重定向
header('Location: http://www.example.com/');
2, 指定内容:
header('Content-type: application/pdf');
3, 附件:
- header('Content-type: application/pdf');
- // 指定内容为附件, 指定下载显示的名字
- header('Content-Disposition: attachment; filename="downloaded.pdf"');
- // 打开文件, 并输出
- readfile('original.pdf');
以上代码可以在浏览器产生文件对话框的效果
4, 让用户获取最新的资料和数据而不是缓存
- header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
- header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // 设置临界时间
详细例子:
- <?PHP
- header('HTTP/1.1 200 OK'); // ok 正常访问
- header('HTTP/1.1 404 Not Found'); // 通知浏览器 页面不存在
- header('HTTP/1.1 301 Moved Permanently'); // 设置地址被永久的重定向 301
- header('Location: http://www.ithhc.cn/'); // 跳转到一个新的地址
- header('Refresh: 10; url=http://www.ithhc.cn/'); // 延迟转向 也就是隔几秒跳转
- header('X-Powered-By: PHP/6.0.0'); // 修改 X-Powered-By 信息
- header('Content-language: en'); // 文档语言
- header('Content-Length: 1234'); // 设置内容长度
- header('Last-Modified:'.gmdate('D, d M Y H:i:s', $time).'GMT'); // 告诉浏览器最后一次修改时间
- header('HTTP/1.1 304 Not Modified'); // 告诉浏览器文档内容没有发生改变
- ### 内容类型 ###
- header('Content-Type: text/html; charset=utf-8'); // 网页编码
- header('Content-Type: text/plain'); // 纯文本格式
- header('Content-Type: image/jpeg'); //JPG,JPEG
- header('Content-Type: application/zip'); // ZIP 文件
- header('Content-Type: application/pdf'); // PDF 文件
- header('Content-Type: audio/mpeg'); // 音频文件
- header('Content-type: text/CSS'); //CSS 文件
- header('Content-type: text/javascript'); //JS 文件
- header('Content-type: application/json'); //JSON
- header('Content-type: application/pdf'); //PDF
- header('Content-type: text/xml'); //xml
- header('Content-Type: application/x-shockw**e-flash'); //Flash 动画
- ######
- ### 声明一个下载的文件 ###
- header('Content-Type: application/octet-stream');
- header('Content-Disposition: attachment; filename="ITblog.zip"');
- header('Content-Transfer-Encoding: binary');
- readfile('test.zip');
- ######
- ### 对当前文档禁用缓存 ###
- header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
- header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
- ######
- ### 显示一个需要验证的登陆对话框 ###
- header('HTTP/1.1 401 Unauthorized');
- header('WWW-Authenticate: Basic realm="Top Secret"');
- ######
- ### 声明一个需要下载的 xls 文件 ###
- header('Content-Disposition: attachment; filename=ithhc.xlsx');
- header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
- header('Content-Length:'.filesize('./test.xls'));
- header('Content-Transfer-Encoding: binary');
- header('Cache-Control: must-revalidate');
- header('Pragma: public');
- readfile('./test.xls');
- ######
- ?>
来源: http://www.bubuko.com/infodetail-2851006.html