object(stdClass)#28 (2) { ["docs"]=> array(0) { } ["count"]=> int(0) } PHP header函数的几大作用 - 爱码网
huyihao

先看看官方文档的定义

(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 指令), 就会希望脚本响应了正确的状态码。

1 <?php
2 header("HTTP/1.0 404 Not Found");
3 ?> 

    第二种特殊情况是"Location:"的头信息。它不仅把报文发送给浏览器,而且还将返回给浏览器一个 REDIRECT(302)的状态码,除非状态码已经事先被设置为了201或者3xx

1 <?php
2 header("Location: http://www.example.com/"); /* Redirect browser */
3 
4 /* Make sure that code below does not get executed when we redirect. */
5 exit;
6 ?> 
  replace

 可选参数 replace 表明是否用后面的头替换前面相同类型的头。 默认情况下会替换。如果传入 FALSE,就可以强制使相同的头信息并存。例如:

1 <?php
2 header(\'WWW-Authenticate: Negotiate\');
3 header(\'WWW-Authenticate: NTLM\', false);
4 ?> 

  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");   // 设置临界时间

 

详细例子:

 1 <?php
 2 header(\'HTTP/1.1 200 OK\'); // ok 正常访问
 3 header(\'HTTP/1.1 404 Not Found\'); //通知浏览器 页面不存在
 4 header(\'HTTP/1.1 301 Moved Permanently\'); //设置地址被永久的重定向 301
 5 header(\'Location: http://www.ithhc.cn/\'); //跳转到一个新的地址
 6 header(\'Refresh: 10; url=http://www.ithhc.cn/\'); //延迟转向 也就是隔几秒跳转
 7 header(\'X-Powered-By: PHP/6.0.0\'); //修改 X-Powered-By信息
 8 header(\'Content-language: en\'); //文档语言
 9 header(\'Content-Length: 1234\'); //设置内容长度
10 header(\'Last-Modified: \'.gmdate(\'D, d M Y H:i:s\', $time).\' GMT\'); //告诉浏览器最后一次修改时间
11 header(\'HTTP/1.1 304 Not Modified\'); //告诉浏览器文档内容没有发生改变
12  
13 ###内容类型###
14 header(\'Content-Type: text/html; charset=utf-8\'); //网页编码
15 header(\'Content-Type: text/plain\'); //纯文本格式
16 header(\'Content-Type: image/jpeg\'); //JPG、JPEG 
17 header(\'Content-Type: application/zip\'); // ZIP文件
18 header(\'Content-Type: application/pdf\'); // PDF文件
19 header(\'Content-Type: audio/mpeg\'); // 音频文件 
20 header(\'Content-type: text/css\'); //css文件
21 header(\'Content-type: text/javascript\'); //js文件
22 header(\'Content-type: application/json\'); //json
23 header(\'Content-type: application/pdf\'); //pdf
24 header(\'Content-type: text/xml\'); //xml
25 header(\'Content-Type: application/x-shockw**e-flash\'); //Flash动画
26  
27 ######
28  
29 ###声明一个下载的文件###
30 header(\'Content-Type: application/octet-stream\');
31 header(\'Content-Disposition: attachment; filename="ITblog.zip"\');
32 header(\'Content-Transfer-Encoding: binary\');
33 readfile(\'test.zip\');
34 ######
35  
36 ###对当前文档禁用缓存###
37 header(\'Cache-Control: no-cache, no-store, max-age=0, must-revalidate\');
38 header(\'Expires: Mon, 26 Jul 1997 05:00:00 GMT\');
39 ######
40  
41 ###显示一个需要验证的登陆对话框### 
42 header(\'HTTP/1.1 401 Unauthorized\'); 
43 header(\'WWW-Authenticate: Basic realm="Top Secret"\'); 
44 ######
45  
46  
47 ###声明一个需要下载的xls文件###
48 header(\'Content-Disposition: attachment; filename=ithhc.xlsx\');
49 header(\'Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\');
50 header(\'Content-Length: \'.filesize(\'./test.xls\')); 
51 header(\'Content-Transfer-Encoding: binary\'); 
52 header(\'Cache-Control: must-revalidate\'); 
53 header(\'Pragma: public\'); 
54 readfile(\'./test.xls\'); 
55 ######
56 ?>

 

 

分类:

技术点:

相关文章: