php header()函数的具体作用是向客户端发送一个原始 HTTP 标头[Http Header]到客户端。
标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔。在任何实际的输出被发送之前调用 header() 函数(在 PHP 4 以及更高的版本中,您可以使用输出缓存来解决此问题)。
下面举一些比较常见的header用法示例:
(1)使用header实现重定向(等价于代替用户在地址栏输入url)。
3 | 
exit;//注意务必在每个重定向之后都必须加上exit,避免发生错误后,代码会继续向下执行 | 
 
 
 
04 | 
@功能:等待指定的时间,然后再跳转到指定页面(代替html meta方式) | 
 
07 | 
echo '正在加载,请稍等...<br>三秒后自动跳转'; | 
 
09 | 
说明:若等待时间为0,则与header("location:")等效。 | 
 
 
 
(2)禁止页面在浏览器中被缓存。
如果因业务需要访问者每次都浏览页面都是得到最新的资料,而不是 Proxy 或 cache 中的资料,可以使用下列的标头:
2 | 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); | 
 
3 | 
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); | 
 
4 | 
header('Cache-Control: no-store, no-cache, must-revalidate'); | 
 
5 | 
header('Cache-Control: post-check=0, pre-check=0', false ); | 
 
6 | 
header('Pragma: no-cache'); //兼容http1.0和https | 
 
 
 
其实这里主要就是设置下面几个选项的值:
CacheControl = no-cache
Pragma=no-cache
Expires = -1
当HTTP1.1服务器指定CacheControl = no-cache时,浏览器就不会缓存该网页。旧式 HTTP 1.0 服务器不能使用 Cache-Control 标题。所以为了向后兼容 HTTP 1.0 服务器,IE使用Pragma:no-cache 标题对 HTTP 提供特殊支持。
有关Cache-control的具体介绍请参考本站文章:
网页缓存控制 Cache-control 常见的取值有private、no-cache、max-age、must-revalidate 介绍
如果客户端通过安全连接 (https://) 与服务器通讯,且服务器在响应中返回 Pragma:no-cache 标题,则 Internet Explorer 不会缓存此响应。注意:Pragma:no-cache 仅当在安全连接中使用时才防止缓存,如果在非安全页中使用,处理方式与 Expires:-1 相同,该页将被缓存,但被标记为立即过期。
Expires是个好东东,如果服务器上的网页经常变化,就把它设置为-1,表示立即过期。如果一个网页每天凌晨1点更新,可以把Expires设置为第二天的凌晨1点。
(3)让使用者的浏览器出现找不到档案的信息。
网上很多资料这样写:php的函数header()可以向浏览器发送Status标头,如 header(”Status: 404 Not Found”)。但是我发现实际上浏览器返回的响应却是:
HTTP/1.x 200 OK
Date: Thu, 03 Aug 2006 07:49:11 GMT
Server: Apache/2.0.55 (Win32) PHP/5.0.5
X-Powered-By: PHP/5.0.5
Status: 404 Not Found
Content-Length: 0
Keep-Alive: timeout=15, max=98
Connection: Keep-Alive
Content-Type: text/html
查了一些资料,正确的写法是:
header(”http/1.1 404 Not Found”);
第一部分为HTTP协议的版本(HTTP-Version);第二部分为状态代码(Status);第三部分为原因短语(Reason-Phrase)。
(4)让访问者下载档案(隐藏文件的位置)。
我们都知道通过原始的url就可以实现普通文件下载,但是如果我们需要保密文件在服务器上的存储位置,就不能直接把文件链接显示出来,这里我们就可以通过header函数隐藏文件地址同时又实现文件的下载,具体代码如下:
2 | 
header("Content-type: application/x-gzip"); | 
 
3 | 
header("Content-Disposition: attachment; filename=phpernote.zip"); | 
 
4 | 
header("Content-Description: PHP3 Generated Data"); | 
 
 
 
另外,关于使用php进行文件下载,可以参照本站文章:
PHP文件下载函数(代码)
下面列举一些并不是非常常见的header的用法示例:
04 | 
header('HTTP/1.1 200 OK'); | 
 
07 | 
header('HTTP/1.1 404 Not Found'); | 
 
10 | 
header('HTTP/1.1 301 Moved Permanently'); | 
 
13 | 
header('Content-language: en'); | 
 
16 | 
$time = time() - 60; // or filemtime($fn), etc | 
 
17 | 
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT'); | 
 
20 | 
header('HTTP/1.1 304 Not Modified'); | 
 
23 | 
header('Content-Length: 1234'); | 
 
26 | 
header('Content-Type: text/html; charset=iso-8859-1'); | 
 
27 | 
header('Content-Type: text/html; charset=utf-8'); | 
 
28 | 
header('Content-Type: text/plain'); //纯文本格式 | 
 
29 | 
header('Content-Type: image/jpeg'); //JPG图片 | 
 
30 | 
header('Content-Type: application/zip'); // ZIP文件 | 
 
31 | 
header('Content-Type: application/pdf'); // PDF文件 | 
 
32 | 
header('Content-Type: audio/mpeg'); // 音频文件 | 
 
33 | 
header('Content-Type: application/x-shockwave-flash'); //Flash动画 | 
 
 
 												
												
								- 转载:Hadoop排序工具用法小结
		
本文转载自Silhouette的文章,原文地址:http://www.dreamingfish123.info/?p=1102 Hadoop排序工具用法小结 发表于 2014 年 8 月 25 日 由 ...
		 
						- [No000010]Ruby 中一些百分号(%)的用法小结
		
#Ruby 中一些百分号(%)的用法小结 #这篇文章主要介绍了Ruby 中一些百分号(%)的用法小结,需要的朋友可以参考下 what_frank_said = "Hello!"#% ...
		 
						- C++ typedef用法小结 (※不能不看※)
		
C++ typedef用法小结 (※不能不看※) 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不 ...
		 
						- 函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结  (转)
		
函数fgets和fputs.fread和fwrite.fscanf和fprintf用法小结 字符串读写函数fgets和fputs 一.读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符 ...
		 
						- 1:CSS中一些@规则的用法小结  2: @media用法详解
		
第一篇文章:@用法小结 第二篇文章:@media用法 第一篇文章:@用法小结 这篇文章主要介绍了CSS中一些@规则的用法小结,是CSS入门学习中的基础知识,需要的朋友可以参考下     at-rule ...
		 
						- 英语语法最终珍藏版笔记- 21it 用法小结
		
it 用法小结 it 在英语中的意思较多,用法较广,现总结如下. 一.it作句子的真正主语 1.it 指前面已经提到过的人或事物,有时指心目中的或成为问题的人或事物,作真正主语. 例如: What’s ...
		 
						- [转]ssh常用用法小结
		
ssh常用用法小结 1.连接到远程主机: 命令格式 : ssh name@remoteserver 或者 ssh remoteserver -l name 说明:以上两种方式都可以远程登录到远程主机, ...
		 
						- 结构体定义 typedef struct 用法详解和用法小结
		
typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便.具体区别在于:若struct node {}这样来定义结构体的话.在申请node 的变量时,需要这样写,stru ...
		 
						- typedef用法小结
		
typedef用法小结- - 注意:本文转自网络,版权归原作者所有. typedef typedef用法小结- - 这两天在看程序的时候,发现很多地方都用到typedef,在结构体定义,还有一些数组等 ...
		 
		
	
随机推荐
	
									- http://src.chromium.org/svn/     定制chrome浏览器教程及源码
			
chromium 官网登不进去,最近在学习chrome插件制作,网上教程很多大多没有源码 其实作为开源软件 官方提供了全部源码地址:http://src.chromium.org/svn/ PRESU ...
			 
						- uboot全局变量
			
一.global_data(include/asm-arm/global_data.h) typedef struct global_data { bd_t *bd; unsigned long fl ...
			 
						- BZOJ 3992 序列统计
			
Description 小C有一个集合\(S\),里面的元素都是小于\(M\)的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为\(N\)的数列,数列中的每个数都属于集合\(S\). 小C用 ...
			 
						- Eclipse的设置小细节提高开发效率
			
1. 自动联想功能增强 preference->java->Editor->Content Assist中, Auto activation triggers for java中默认 ...
			 
						- c++调用ffmpeg
			
在自己编译好ffmpeg库后,已经迫不及待的想尝试用vs2010来调用ffmpeg,在开始调用的时候遇到了些问题,但还是解决了. 配置vs 1.右键工程-属性,在然后选择 配置属性 -> C/C ...
			 
						- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
			
在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等. 但是各种方法都有其注意事项,如果不注意则很容易 ...
			 
						- C 常用的输入输出 栈  哈希 文件写读 实现  字符串处理
			
#include "stdafx.h"#include <stdio.h>#include <string.h>#include <stdlib.h& ...
			 
						- wcf客户端捕获异常
			
直接使用Exception进行捕获,然后在监视器中查看具体是哪一个异常 System.Exception {System.ServiceModel.Security.MessageSecurityEx ...
			 
						- 【转】在ubuntu环境下搭建svn server遇到的一些问题
			
原文网址:http://www.cnblogs.com/pcchinadreamfly/archive/2012/11/24/2786046.html 前段时间在ubuntu 12.04lts上倒腾了 ...
			 
						- Research Papers
			
NSE, $\bbu$ [Papers]NSE, $u$, Lorentz space [Sohr, JEE, 2001] [Papers]NSE, $u$, Lorentz space [Bjorl ...