header()函数使用说明

PHP header()函数与HTTP协议详解
本文介绍了PHP中header()函数的作用,它通过HTTP协议将HTML文档标头送到浏览器。还阐述了HTTP协议的运作方式,包括客户端与服务器的请求响应过程,以及状态码的含义。最后给出了header()函数的操作实例,如重定向、强制获取最新资料、访问权限控制等。
header()函数使用说明:  
 
一、作用:  
~~~~~~~~~  
       PHP只是以HTTP协议将HTML文档的标头送到浏览器,告诉浏览器具体怎么处理这个页面,至于传送的内容则需要熟悉一下HTTP协议了,与PHP无关了,可参照http://www.w3.org/Protocols/rfc2616/rfc2616。  
       传统的标头一定包含下面三种标头之一,并只能出现一次。  
       Location:  xxxx:yyyy/zzzz  
       Content-Type:  xxxx/yyyy  
       Status:  nnn  xxxxxx  
 
二、先来了解一下HTTP协议的运作方式  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
       HTTP协议是基于请求/响应范式的。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为,统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。  
       它分四个过程,在HTTP协议中,服务端是指提供HTTP服务的部分,客户端是指你使用的浏览器或者下载工具等等。在通讯时,由客户端发出请求连接,服务端建立连接;然后,客户端发出HTTP请求(Request),服务端返回响应信息(Respond),由此完成一个HTTP操作。  
 
三、HTTP协议状态码表示的意思  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  1××  保留  
  2××  表示请求成功地接收  
  3××  为完成请求客户需进一步细化请求  
  4××  客户错误  
  5××  服务器错误  
 
四、操作实例:  
~~~~~~~~~~~~~  
   <1>  重定向功能,这种最常见  
       <?php  
           Header("Location:  http://www.php.net");    
       ?>  
 
   <2>  强制用户每次访问这个页面时获取最新资料,而不是使用存在客户端的缓存。  
       <?php  
           //告诉浏览器此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可。  
           header("Expires:  Mon,  26  Jul  1970  05:00:00  GMT");  
           //告诉浏览器此页面的最后更新日期(用格林威治时间表示)也就是当天,目的就是强迫浏览器获取最新资料  
           header("Last-Modified:  "  .  gmdate("D,  d  M  Y  H:i:s")  .  "GMT");  
           //告诉客户端浏览器不使用缓存  
           header("Cache-Control:  no-cache,  must-revalidate");  
           //参数(与以前的服务器兼容),即兼容HTTP1.0协议  
           header("Pragma:  no-cache");      
           //输出MIME类型  
           header("Content-type:  application/file");      
           //文件长度  
           header("Content-Length:  227685");      
           //接受的范围单位  
           header("Accept-Ranges:  bytes");  
           //缺省时文件保存对话框中的文件名称  
           header("Content-Disposition:  attachment;  filename=$filename");  
       ?>  
 
   <3>  输出状态值到浏览器,主要用于访问权限控制  
       <?php  
           header('HTTP/1.1  401  Unauthorized');  
           header('status:  401  Unauthorized');  
       ?>  
           比如要限制一个用户不能访问该页,则可设置状态为404,如下所示,这样浏览器就显示为即该页不存在  
       <?php  
           header('HTTP/1.1  404  Not  Found');  
           header("status:  404  Not  Found");  
       ?>  
### PHP 中 `header()` 函数的详细用法与功能说明 `header()` 函数PHP 中用于向客户端发送原始 HTTP 头信息。它必须在任何实际输出之前调用,包括 HTML 标签、空行或空格等[^2]。 #### 1. 基本语法 函数的基本语法如下: ```php void header ( string $string [, bool $replace = true [, int $http_response_code ]] ) ``` - `$string`: 要发送的头信息字符串。 - `$replace`: 可选参数,默认为 `true`,表示替换掉同名的头信息;如果设置为 `false`,则会添加一个新的头信息。 - `$http_response_code`: 可选参数,用于强制设置 HTTP 响应状态码。 #### 2. 常见用法 ##### (1) 重定向页面 通过 `header()` 函数可以实现页面的重定向,例如 301 永久重定向或 302 临时重定向。 ```php header("Location: https://www.example.com", true, 301); // 301永久重定向 ``` 此代码将用户重定向到指定 URL,并设置 HTTP 状态码为 301。 ##### (2) 设置内容类型 可以使用 `header()` 函数来指定返回内容的 MIME 类型。 ```php header("Content-Type: application/json"); // 返回 JSON 数据 header("Content-Type: text/html; charset=UTF-8"); // 返回 HTML 页面并指定字符集 ``` ##### (3) 强制下载文件 通过设置 `Content-Disposition` 头信息,可以让浏览器提示用户下载文件而不是直接打开。 ```php header('Content-Type: application/zip'); // 设置 MIME 类型为 zip 文件 header('Content-Disposition: attachment; filename="example.zip"'); // 强制下载文件名为 example.zip ``` 如果将 `attachment` 替换为 `inline`,则表示在线打开文件[^4]。 ##### (4) 自定义 HTTP 状态码 可以通过 `header()` 函数自定义 HTTP 响应状态码。 ```php header("HTTP/1.1 404 Not Found"); // 返回 404 错误 header("HTTP/1.1 500 Internal Server Error"); // 返回 500 错误 ``` ##### (5) 缓存控制 可以使用 `header()` 函数来控制浏览器缓存行为。 ```php header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); // 禁止缓存 header("Pragma: no-cache"); // 兼容旧版浏览器 ``` #### 3. 注意事项 - 必须确保在调用 `header()` 函数之前没有任何输出,否则会导致报错:`headers already sent`。 - 如果需要跨多个文件使用 `header()`,请确保所有文件都没有多余的空格或换行符。 #### 4. 示例代码 以下是一个完整的示例,展示如何使用 `header()` 实现页面重定向和强制下载文件的功能: ```php <?php // 页面重定向 header("Location: https://www.example.com", true, 302); // 强制下载文件 header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="example.txt"'); header('Content-Length: ' . filesize('example.txt')); readfile('example.txt'); ?> ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值