header的作用

2017-03-16  本文已影响0人  changxiaonan

一、作用:

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

######

上一篇 下一篇

猜你喜欢

热点阅读