header的作用

一、作用:

PHP只是以HTTP协议将HTML文档的标头送到浏览器,告诉浏览器具体怎么处理这个页面,至于传送的内容则需要熟悉一下HTTP协议了,与PHP无关了

传统的标头一定包含下面三种标头之一,并只能出现一次。

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>    重定向功能,这种最常见


Header("Location:http://www.php.net");

?>

<2>    强制用户每次访问这个页面时获取最新资料,而不是使用存在客户端的缓存。


//告诉浏览器此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可。

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>    输出状态值到浏览器,主要用于访问权限控制


header('HTTP/1.1    401    Unauthorized');

header('status:    401    Unauthorized');

?>

比如要限制一个用户不能访问该页,则可设置状态为404,如下所示,这样浏览器就显示为即该页不存在


header('HTTP/1.1    404    Not    Found');

header("status:    404    Not    Found");

?>

注意: 传统的标头一定包含下面三种标头之一,并只能出现一次。  Content-Type: xxxx/yyyy Location: xxxx:yyyy/zzzz Status: nnn xxxxxx 在新的多型标头规格  (Multipart MIME) 方可以出现二次以上。

使用范例

范例一: 本例使浏览器重定向到 PHP 的官方网站。  Header("Location: http://www.php.net"); exit; >?

范例二: 要使用者每次都能得到最新的资料,而不是  Proxy 或 cache 中的资料,可以使用下列的标头 header("Expires: Mon, 26 Jul 1997 05:00:00  GMT");

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");  header("Cache-Control: no-cache, must-revalidate");

header("Pragma:  no-cache"); >?

范例三: 让使用者的浏览器出现找不到档案的信息。

header("Status: 404 Not  Found"); >?

范例四:让使用者下载档案。

header("Content-type:  application/x-gzip");

header("Content-Disposition: attachment;  filename=文件名");

header("Content-Description: PHP3 Generated Data"); >?

常用的header形式如下:

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');

######

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容