zoukankan      html  css  js  c++  java
  • PHP header函数的几大作用

    先看看官方文档的定义

    (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 ?>
  • 相关阅读:
    CF553C Love Triangles
    CF875C National Property
    【UOJ #210】【UER #6】寻找罪犯
    ICPC南昌网络赛I题Yukino With Subinterval
    进阶式-日志打印-构建器模式
    Java 对象类型
    mqtt 消息重传
    Java 关键字 final 知识点巩固
    MQTT 5.0 新特性
    emqx 认证详细
  • 原文地址:https://www.cnblogs.com/huyihao/p/6004800.html
Copyright © 2011-2022 走看看