语法:

Void header(string $string[,bool $replace=true [, int $http_response_code)

向客户端发送原始的HTTP报头

需注意:

Header函数必须在任何实际的输出前调用,无论是一般的html标签、文件中空行,或者来自php。就是在这个函数之前不能有任何形式的输出。

参数说明:

参数

描述

string

必需。规定要发送的报头字符串。

replace

可选。指示该报头是否替换之前的报头,或添加第二个报头。

默认是 true(替换)。false(允许相同类型的多个报头)。

http_response_code

可选。把 HTTP 响应代码强制为指定的值。(PHP 4 以及更高版本可用)

常见用法实例:

1.发送服务器状态码

header("HTTP/1.0 404 Not Found");

常用状态码

状态码

说明

100-199

表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程

200-299

成功接收请求,并已完成整个处理过程,常用200

300-399

未完成请求,客户端需要进一步细化请求,比如,请求的资源已经移动到一个新的地址,常用302,304

400-499

客户端请求有误 常用404

500-599

服务器端出现错误,常用500

2.页面跳转

header("Location: http://www.baidu.com/");

header("refresh:3;url=http://www.baidu.com");

3s后跳转

3.设置浏览器缓存

强制浏览器不进行缓存!

//header("Expires:-1");

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

header("Cache-Control:no-cache,must-revalidate");

header("pragma:no-cache");

header("Last-Modified: ". date("D, j M Y H:i:s T") );

说明:

Expires后的时间必须是GMT格式的 如gmdate("M d Y H:i:s");

Cache-control常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况。

Cache-directive

说明

public

所有内容都将被缓存

private

内容只缓存到私有缓存中

no-cache

所有内容都不会被缓存

no-store

所有内容都不会被缓存到缓存或 Internet 临时文件中

must-revalidation/proxy-revalidation

如果缓存的内容失效,请求必须发送到服务器/代理以进行重新验证

max-age=xxx (xxx is numeric)

缓存的内容将在 xxx 秒后失效, 这个选项只在HTTP 1.1可用, 并如果和Last-Modified一起使用时, 优先级较高

1.打开新窗口

如果指定cache-control的值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值,那么在此值内的时间就不会重新访问服务器,如:

Header(“cache-control:max-age=5”);

表示当访问此网页后的5秒内不会再次访问服务器

2.在地址栏回车

如果值为private或Must-revalidate,则只有第一次访问时会访问服务器,以后就不在访问。如果值为no-cache,那么每次都会访问。如果值为max-age,则在过期之前不会重复访问。

3.按后退按钮

如果值为private、must-revalidate、max-age,则不会重访问,而如果为no-cache,则每次都重复访问

4.按刷新按钮

无论何值,都会重复访问

当指定Cache-control值为“no-cache”时,访问此页面不会在Internet临时文章夹留下页面备份。

另外,通过指定“Expires”值也会影响到缓存。例如,指定Expires值为一个早已过去的时间,那么访问此网时若重复在地址栏按回车,那么每次都会重复访问:

Expires: Fri, 31 Dec 1999 16:00:00 GMT

5.关于"Last-Modified

在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记此文件在服务期端最后被修改的时间,格式类似这样:
 Last-Modified: Fri, 12 May 2006 18:53:33 GMT
 客户端第二次请求此URL时,根据 HTTP 协议的规定,浏览器会向服务器传送 If-Modified-Since 报头,询问该时间之后文件是否有被修改过:
  If-Modified-Since: Fri, 12 May 2006 18:53:33 GMT
 如果服务器端的资源没有变化,则自动返回 HTTP 304 (Not Changed.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类似。从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。

Last-Modified提高性能

聪明的开发者会把Last-Modified 和ETags请求的http报头一起使用,这样可利用客户端(例如浏览器)的缓存。因为服务器首先产生 Last-Modified/Etag标记,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端通过将该记号传回服务器要求服务器验证其(客户端)缓存。
  过程如下:

1 客户端请求一个页面(A)。

2 服务器返回页面A,并在给A加上一个Last-Modified。

3 客户端展现该页面,并将页面连同Last-Modified一起缓存。

4 客户再次请求页面A,并将上次请求时服务器返回的Last-Modified一起传递给服务器。

5 服务器检查该Last-Modified,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304和一个空的响应体。

3.文件下载

比如下载一个pdf文件

// We'll be outputting a PDF

header('Content-type: application/pdf');

// It will be called downloaded.pdf

//表明他是附件,进行命名并下载

header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in 1.pdf

readfile('1.pdf');

一般

header(“content-type:application/octet-sream”);

Header(“Accept-Ranges:bytes”);//依字节返回

Header(“content-disposition:attachement;filename=’ 文件名’”);

Header(“Accept-length:”.$filesize);

其实要更好的了解这些,还是得去好好学习http协议啊!

参考资料:互联网....

Php header()函数及其常见使用的更多相关文章

  1. PHP header函数的几大作用

    先看看官方文档的定义 (PHP 4, PHP 5, PHP 7) header - 发送原生 HTTP 头 void header ( string $string [, bool $replace ...

  2. PHP header() 函数详细说明(301、404等错误设置)

    原文来自:http://www.veryhuo.com/a/view/41466.html 如果您刚刚开始学习PHP,可能有许多函数需要研究,今天我们就来学习一下PHP Header()的使用方法,更 ...

  3. HTTP 头和 PHP header() 函数

    http://unifreak.github.io/translation/Http_headers_and_PHP_header()_function 引言 许多初级到中级的的 PHP 程序员把 h ...

  4. PHP header函数设置http报文头(设置头部域)

    PHP HTTP 简介: HTTP 函数允许您在其他输出被发送之前,对由 Web 服务器发送到浏览器的信息进行操作. PHP 5 HTTP 函数:header()     向客户端发送原始的 HTTP ...

  5. PHP中的header()函数作用

    PHP 中 header()函数的作用是给客户端发送头信息. 什么是头信息?这里只作简单解释,详细的自己看http协议.在 HTTP协议中,服务器端的回答(response)内容包括两部分:头信息(h ...

  6. PHP header函数使用大全

    PHP header函数大全 header('Content-Type: text/html; charset=utf-8'); header('Location: http://52php.cnbl ...

  7. PHP中header函数的用法及其注意重点是什么呢

    1.使用header函数进行跳转页面: header('Location:'.$url); 其中$url就是将要跳转的url了. 这种用法的注意事项有以下几点: •Location和":&q ...

  8. php header()函数设置页面Cache缓存

    header()函数在php的使用很大,下面我来介绍利用它实现页面缓存的一些方法,但使用header前必须注意,在它之前不能任何输出,包括空格. 手册上,我们对于cache都是写着如何设置,以便让代码 ...

  9. PHP header()函数

    对header函数,我用得最多的就是跳转页面和设置字符集,其他的功能用得比较少. 一.设置字符集 其实我们用的最多的在在html代码当中的<meta>标签里面设置字符集.格式如下: < ...

随机推荐

  1. JavaWeb -- Struts 自定义拦截器, 登录权限拦截

    1. 自定义拦截器, 登录权限拦截 login.jsp 登录JSP <%@ page language="java" contentType="text/html; ...

  2. Pandas选项和自定义

    Pandas提供API来自定义其行为的某些方面,大多使用来显示. API由五个相关函数组成.它们分别是 - get_option() set_option() reset_option() descr ...

  3. css滚动相关问题记录

    1) 关于滑动加速优化,可以通过css进行处理 例如,html如下: <div class="content-dialog"> <h1>活动规则</h ...

  4. jmeter的学习(配置环境)

    jmeter是一款开源工具.解压即可使用 前提要安装配置jdk.验证jdk是否安装配置成功.运行cmd输入“ java -version” 如上图所示.jdk安装配置成功:64位版本1.8 现在即可进 ...

  5. 20165332实验一 Java开发环境的熟悉

    实验一 Java开发环境的熟悉 一.Java开发环境的熟悉-1 1.实验要求: 0 参考实验要求: 1 建立"自己学号exp1"的目录 : 2 在"自己学号exp1&qu ...

  6. pip使用国内镜像解决安装超时

    刚刚用pip install pipenv时,发现抛出一个超时的问题 这是从files.pythonhosted.org去下载的,国内的网访问时慢的出奇,然后就会出现超时的情况.这时候,可以使用国内镜 ...

  7. swagger 文件上传

    单个文件上传的写法: @RequestParam MultipartFile pictures 多个文件上传的写法: @RequestParam String token,@RequestPart(& ...

  8. POJ 2502 最短路

    http://poj.org/problem?id=2502 同一条地铁线上的站点相邻点间按照v2建边,然后所有点之间按照v1更新建边,所有的边都是双向边,both directions. 然后直接跑 ...

  9. 【Hive】数据去重

    实现数据去重有两种方式 :distinct 和 group by 1.distinct消除重复行 distinct支持单列.多列的去重方式. 单列去重的方式简明易懂,即相同值只保留1个. 多列的去重则 ...

  10. MVC 框架中的缓存

    在程序中加入缓存的目的很多是为了提高程序的性能,提高数据的查找效率,在MVC框架中也引入了非常多的缓存,比如Controller的匹配查找,Controller,ControllerDescripto ...