Php header()函数语法及使用代码


Posted in PHP onNovember 04, 2013

语法:

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 以及更高版本可用)
常见用法实例:

一、发送服务器状态码

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

常用状态码:

状态码 说明
100-199 表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程
200-299 成功接收请求,并已完成整个处理过程,常用200
300-399 未完成请求,客户端需要进一步细化请求,比如,请求的资源已经移动到一个新的地址,常用302,304
400-499 客户端请求有误 常用404
500-599 服务器端出现错误,常用500
详细见:HTTP&FTP相应提示信息

二、页面跳转

// 立即跳转
header('Location: https://3water.com/');// 3秒后跳转
header('refresh:3;url=https://3water.com');
3.设置浏览器缓存

强制浏览器不进行缓存!
[code]
//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一起使用时, 优先级较高
打开新窗口
如果指定cache-control的值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值,那么在此值内的时间就不会重新访问服务器,如:
header('cache-control:max-age=5');

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

在地址栏回车
如果值为private或Must-revalidate,则只有第一次访问时会访问服务器,以后就不在访问。如果值为no-cache,那么每次都会访问。如果值为max-age,则在过期之前不会重复访问。
按后退按钮
如果值为private、must-revalidate、max-age,则不会重访问,而如果为no-cache,则每次都重复访问
按刷新按钮
无论何值,都会重复访问。当指定Cache-control值为“no-cache”时,访问此页面不会在Internet临时文章夹留下页面备份。另外,通过指定“Expires”值也会影响到缓存。例如,指定Expires值为一个早已过去的时间,那么访问此网时若重复在地址栏按回车,那么每次都会重复访问:
Expires: Fri, 31 Dec 1999 16:00:00 GMT
关于”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标记,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端通过将该记号传回服务器要求服务器验证其(客户端)缓存。

过程如下:

客户端请求一个页面(A)
服务器返回页面A,并在给A加上一个Last-Modified
客户端展现该页面,并将页面连同Last-Modified一起缓存
客户再次请求页面A,并将上次请求时服务器返回的Last-Modified一起传递给服务器
服务器检查该Last-Modified,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304和一个空的响应体。

三、文件下载
比如下载一个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);
PHP 相关文章推荐
改变Apache端口等配置修改方法
Jun 05 PHP
深入解析php之sphinx
May 15 PHP
PHP生成随机密码类分享
Jun 25 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 PHP
php递归法读取目录及文件的方法
Jan 30 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
Sep 23 PHP
Zend Framework教程之Application用法实例详解
Mar 14 PHP
Yii2针对指定url的生成及图片等的引入方法小结
Jul 18 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
Nov 25 PHP
php代码调试利器firephp安装与使用方法分析
Aug 21 PHP
php简单检测404页面的方法示例
Aug 23 PHP
thinkphp5.1框架模板赋值与变量输出示例
May 25 PHP
php配置php-fpm启动参数及配置详解
Nov 04 #PHP
mac下安装nginx和php
Nov 04 #PHP
php使用curl模拟登录后采集页面的例子
Nov 04 #PHP
在PHP上显示JFreechart画的统计图方法
Nov 03 #PHP
php网站判断用户是否是手机访问的方法
Nov 01 #PHP
php合并js请求的例子
Nov 01 #PHP
php上传文件中文文件名乱码的解决方法
Nov 01 #PHP
You might like
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
简单谈谈php延迟静态绑定
2016/01/26 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
关于php中一些字符串总结
2016/05/05 PHP
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
JS提交form表单实例分析
2015/12/10 Javascript
JavaScript 链式结构序列化详解
2016/09/30 Javascript
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
layui 上传图片 返回图片地址的方法
2019/09/26 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
对pandas的行列名更改与数据选择详解
2018/11/12 Python
Python3爬虫全国地址信息
2019/01/05 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
python+tifffile之tiff文件读写方式
2020/01/13 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
python tkinter 设置窗口大小不可缩放实例
2020/03/04 Python
浅析Python 条件控制语句
2020/07/15 Python
python 实现图片修复(可用于去水印)
2020/11/19 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
中文师范生自荐信
2014/01/30 职场文书
大学生军训感想
2014/02/16 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
2015年幼儿园个人工作总结
2015/04/25 职场文书
flex弹性布局详解
2022/03/20 HTML / CSS