header函数在php中是发送一些头部信息的, 我们可以直接使用它来做301跳转等,下面我来总结关于header函数用法与一些常用见问题解决方法。发送一个原始 HTTP 标头[Http Header]到客户端。标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔.方法/步骤1.重定向.查看源代码打印帮助Header("Location: http://blog.anepx.com");exit; //在每个重定向之后都必须加上“exit”,避免发生错误后,继续执行。2.禁止页面在IE中缓存查看源代码打印帮助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-store, no-cache, must-revalidate' );header( 'Cache-Control: post-check=0, pre-check=0', false );header( 'Pragma: no-cache' ); //兼容http1.0和https3.实现文件下载查看源代码打印帮助header('Content-Type: application/octet-stream');//设置内容类型header('Content-Disposition: attachment; filename="example.zip"'); //设置MIME用户作为附件下载 如果将attachment换成inline意思为在线打开header('Content-Transfer-Encoding: binary');//设置传输方式header('Content-Length: '.filesize('example.zip'));//设置内容长度readfile('example.zip');//读取需要下载的文件4. 向浏览器发送Status标头header(”Status: 404 Not Found”);但是我发现实际上浏览器返回的响应却是:查看源代码打印帮助// okheader(‘HTTP/1.1 200 OK’);//设置一个404头:header(‘HTTP/1.1 404 Not Found’);//设置地址被永久的重定向header(‘HTTP/1.1 301 Moved Permanently’);HTTP/1.x 200 OKDate: Thu, 03 Aug 2006 07:49:11 GMTServer: Apache/2.0.55 (Win32) PHP/5.0.5X-Powered-By: PHP/5.0.5Status: 404 Not FoundContent-Length: 0Keep-Alive: timeout=15, max=98Connection: Keep-AliveContent-Type: text/html注意事项有以下几点.Location和”:”之间不能有空格,否则会出现错误(注释:我刚测试了,在我本地环境下,没有跳转页面,但是也没有报错,不清楚什么原因);在用header前不能有任何的输出(注释:这点大家都知道的,如果header之前有任何的输出,包括空白,就会出现header already sent by xxx的错误);header 后面的东西还会执行的;来自
http://jingyan.baidu.com/article/0320e2c1d9ac1e1b87507bc7.htmlPHP中header函数的用法及其注意事项详解
void header ( string
$string
[, bool
$replace
= true [, int
$http_response_code
]] ) : Send a raw HTTP header
下面有一些使用header的几种用法:
1、使用header函数进行跳转页面;
header('Location:'.$url);
其中$url就是将要跳转的url了。
这种用法的注意事项有以下几点:
•Location和":"之间不能有空格,否则会出现错误(注释:我刚测试了,在我本地环境下,没有跳转页面,但是也没有报错,不清楚什么原因);
•在用header前不能有任何的输出(注释:这点大家都知道的,如果header之前有任何的输出,包括空白,就会出现header already sent by xxx的错误);
•header 后面的东西还会执行的;
2、使用header声明content-type
header('content-type:text/html;charset=utf-8');
这个没有什么好说的;
3、使用header返回response 状态码
header(sprintf('%s %d %s', $http_version, $status_code, $description));
样式就是这样的;
例如:header('HTTP/1.1 404 Not Found');
4、使用header在某个时间后执行跳转
header("Refresh: {$delay}; url={$url}");
其中$delay就是推迟跳转的时间,$url为需要跳转的url
例如:header('Refresh: 10; url=http://www.example.org/'); 意思为10s后跳转到http://www.eexample.org这个网站
5、使用header控制浏览器缓存
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"
);
6、执行http验证
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Top Secret"');
7、使用header进行下载操作
header(
'Content-Type: application/octet-stream'
);
header(
'Content-Disposition: attachment; filename="example.zip"'
);
header(
'Content-Transfer-Encoding: binary'
);
header(
'Content-Length: '
.
filesize
(
'example.zip'
));
readfile(
'example.zip'
);
下面再给大家介绍PHP header 的几种用法
跳转页面
header('Location:'.$url); //Location和":"之间无空格。
声明content-type
header('content-type:text/html;charset=utf-8');
返回response状态码
header('HTTP/1.1 404 Not Found');
在某个时间后执行跳转
header('Refresh: 10; url=http://www.baidu.com/'); //10s后跳转。
控制浏览器缓存
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");
执行http验证
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Top Secret"');
执行下载操作
header('Content-Type: application/octet-stream'); //设置内容类型
header('Content-Disposition: attachment; filename="example.zip"'); //设置MIME用户作为附件
header('Content-Transfer-Encoding: binary'); //设置传输方式
header('Content-Length: '.filesize('example.zip')); //设置内容长度
来自 http://www.jb51.net/article/86444.htm
void header (
string $string [,
bool $replace = true [,
int $http_response_code ]] ) :
Send a raw HTTP header
下面有一些使用header的几种用法:
1、使用header函数进行跳转页面;
header('Location:'.$url);
其中$url就是将要跳转的url了。
这种用法的注意事项有以下几点: - Location和":"之间不能有空格,否则会出现错误(注释:我刚测试了,在我本地环境下,没有跳转页面,但是也没有报错,不清楚什么原因);
- 在用header前不能有任何的输出(注释:这点大家都知道的,如果header之前有任何的输出,包括空白,就会出现header already sent by xxx的错误);
- header 后面的东西还会执行的;
2、使用header声明content-type
header('content-type:text/html;charset=utf-8');
这个没有什么好说的;
3、使用header返回response 状态码
header(sprintf('%s %d %s', $http_version, $status_code, $description));
样式就是这样的;
例如:header('HTTP/1.1 404 Not Found');
4、使用header在某个时间后执行跳转
header("Refresh: {$delay}; url={$url}");
其中$delay就是推迟跳转的时间,$url为需要跳转的url
例如:header('Refresh: 10; url=
http://www.example.org/'); 意思为10s后跳转到
http://www.eexample.org这个网站
5、使用header控制浏览器缓存
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");
6、执行http验证
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Top Secret"');
7、使用header进行下载操作
header('Content-Type: application/octet-stream');//设置内容类型
header('Content-Disposition: attachment; filename="example.zip"'); //设置MIME用户作为附件下载 如果将attachment换成inline意思为在线打开
header('Content-Transfer-Encoding: binary');//设置传输方式
header('Content-Length: '.filesize('example.zip'));//设置内容长度
// load the file to send:
readfile('example.zip');//读取需要下载的文件
基本上就是上面这些 。。。
参考:
http://blog.csdn.net/wangschang/archive/2010/06/27/5697417.aspx http://tuzwu.javaeye.com/blog/644710 http://apps.hi.baidu.com/share/detail/14626566 http://wenku.baidu.com/view/3efc6ef90242a8956bece4d7.html 来自
http://www.cnblogs.com/ainiaa/archive/2010/11/10/1873421.html header中Content-Disposition的作用与使用方法
作者: 字体:[增加 减小] 类型:转载 时间:2012-06-13 我要评论
本文章详细的介绍了关于php header中Content-disposition用法详细,有需要了解header用法的朋友可参考一下
Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。Content-disposition其实可以控制用户请求所得的内容存为一个文件的时候提供一个默认的文件名,文件直接在浏览器上显示或者在访问时弹出文件下载对话框。
格式说明: content-disposition = "Content-Disposition" ":" disposition-type *( ";" disposition-parm )
字段说明: Content-Disposition为属性名
disposition-type是以什么方式下载,如attachment为以附件方式下载
disposition-parm为默认保存时的文件名
服务端向客户端游览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt、jpg等,会直接在浏览器中显示,如果需要提示用户保存,就要利用Content-Disposition进行一下处理,关键在于一定要加上attachment:
Response.AppendHeader("Content-Disposition","attachment;filename=FileName.txt");
备注:这样浏览器会提示保存还是打开,即使选择打开,也会使用相关联的程序比如记事本打开,而不是IE直接打开了。
Content-Disposition就是当用户想把请求所得的内容存为一个文件的时候提供一个默认的文件名。具体的定义如下:
content-disposition = "Content-Disposition" ":"
disposition-type *( ";" disposition-parm )
disposition-type = "attachment" | disp-extension-token
disposition-parm = filename-parm | disp-extension-parm
filename-parm = "filename" "=" quoted-string
disp-extension-token = token
disp-extension-parm = token "=" ( token | quoted-string )
那么由上可知具体的例子: Content-Disposition: attachment; filename="filename.xls"
当然filename参数可以包含路径信息,但User-Agnet会忽略掉这些信息,只会把路径信息的最后一部分做为文件名。当你在响应类型为application/octet- stream情况下使用了这个头信息的话,那就意味着你不想直接显示内容,而是弹出一个"文件下载"的对话框,接下来就是由你来决定"打开"还是"保存" 了。
注意事项: 1.当代码里面使用Content-Disposition来确保浏览器弹出下载对话框的时候。 response.addHeader("Content-Disposition","attachment");一定要确保没有做过关于禁止浏览器缓存的操作。如下:
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "No-cache");
response.setDateHeader("Expires", 0);
不然会发现下载功能在opera和firefox里面好好的没问题,在IE下面就是不行
来自
http://www.jb51.net/article/30565.htmphp header函数的详解
header函数在php中是发前一些头部信息的,如果我们可以直接使用它来做301跳转等,下面我来总结关于header函数用法与一些常用见问题解决方法。发送一个原始 HTTP 标头[Http Header]到客户端。标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔
例1
禁止页面在IE中缓存
代码如下 | 复制代码 |
<?PHP 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-store, no-cache, must-revalidate’ ); header( ‘Cache-Control: post-check=0, pre-check=0′, false ); header( ‘Pragma: no-cache’ ); //兼容http1.0和https ?> CacheControl = no-cache Pragma=no-cache Expires = -1 |
实现文件下载
代码如下 | 复制代码 |
header('Content-Type: application/octet-stream');//设置内容类型 header('Content-Disposition: attachment; filename="example.zip"'); //设置MIME用户作为附件下载 如果将attachment换成inline意思为在线打开 header('Content-Transfer-Encoding: binary');//设置传输方式 header('Content-Length: '.filesize('example.zip'));//设置内容长度 // load the file to send: readfile('example.zip');//读取需要下载的文件 |
php的函数header()可以向浏览器发送Status标头,
如
代码如下 | 复制代码 |
header(”Status: 404 Not Found”)。 |
但是我发现实际上浏览器返回的响应却是:
代码如下 | 复制代码 |
// ok header(‘HTTP/1.1 200 OK’); //设置一个404头: header(‘HTTP/1.1 404 Not Found’); //设置地址被永久的重定向 header(‘HTTP/1.1 301 Moved Permanently’); 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
|
注意事项有以下几点:
•Location和":"之间不能有空格,否则会出现错误(注释:我刚测试了,在我本地环境下,没有跳转页面,但是也没有报错,不清楚什么原因);
•在用header前不能有任何的输出(注释:这点大家都知道的,如果header之前有任何的输出,包括空白,就会出现header already sent by xxx的错误);
•header 后面的东西还会执行的;
来自 http://www.111cn.net/phper/php-function/45835.htm
PHP常用
Http头
404
header('HTTP/1.1 404 Not Found');
301,302
#firefox中有时会缓存301跳转所以加上了缓存过期
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('HTTP/1.1 301 Moved Permanently');
header('Location: '.$url,true,301);
附件下载
header("Cache-Control: must-revalidate,post-check=0,pre-check=0");
header("Content-Description: File Transfer");
header ("Content-type: application/octet-stream");
header ("Content-Length: " .filesize ($f_name));
header ("Content-Disposition: attachment; filename=" . basename($f_name));
readfile($f_name);
PHPExcel下载
$filename='联盟排行榜'.$date.'.xlsx';
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="'.$filename.'"');
header("Content-Transfer-Encoding: binary");
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: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
$objWriter->save('php://output');
Excel
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition:attachment; filename=demo.xls");
header('Cache-Control: max-age=0');
原文链接:
http://www.kubiji.cn/topic-id2507.html来自
https://www.douban.com/note/601549192/PHP常用
Http头
404
header('HTTP/1.1 404 Not Found');
301,302
#firefox中有时会缓存301跳转所以加上了缓存过期
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('HTTP/1.1 301 Moved Permanently');
header('Location: '.$url,true,301);
附件下载
header("Cache-Control: must-revalidate,post-check=0,pre-check=0");
header("Content-Desc
ription: File Transfer");
header ("Content-type: application/octet-stream");
header ("Content-Length: " .filesize ($f_name));
header ("Content-Disposition: attachment; filename=" . basename($f_name));
readfile($f_name);
PHPExcel下载
$filename='联盟排行榜'.$date.'.xlsx';
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="'.$filename.'"');
header("Content-Transfer-Encoding: binary");
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: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
$objWriter->save('php://output');
Excel
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition:attachment; filename=demo.xls");
header('Cache-Control: max-age=0');
原文链接:http://www.kubiji.cn/topic-id2507.html
来自 http://www.thinkphp.cn/topic/45349.html 在php中preg_match()函数是用来执行正则表达式的一个常用的函数,下面我来给大家详细介绍preg_match使用方法。
函数用法
int preg_match_all ( string pattern, string subject, array matches [, int flags] )
例1
代码如下 | 复制代码 |
<?php preg_match_all ("|<[^>]+>(.*)</[^>]+>|U","<b>example: </b><div align=left>this is a test</div>",$out, PREG_SET_ORDER); print $out[0][0].", ".$out[0][1]."n"; print $out[1][0].", ".$out[1][1]."n"; ?> 本例将输出: <b>example: </b>, example: <div align=left>this is a test</div>, this is a test |
例2
URL 中取出域名
代码如下 | 复制代码 |
<?php // 从 URL 中取得主机名 preg_match("/^(http://)?([^/]+)/i", "http://www.***.net/index.html", $matches); $host = $matches[2]; // 从主机名中取得后面两段 preg_match("/[^./]+.[^./]+$/", $host, $matches); echo "domain name is: {$matches[0]}n"; ?> 本例将输出: domain name is: PPP.NET |
preg_match字符串长度问题
preg_match正则提取目标内容,死活有问题,代码测得死去活来。
后来怀疑PHP 的preg_match有字符串长度限制,果然,发现“pcre.backtrack_limit ”的值默认只设了100000。
解决办法:
代码如下 | 复制代码 |
ini_set('pcre.backtrack_limit', 999999999); |
注:这个参数在php 5.2.0版本之后可用。
另外说说关于:pcre.recursion_limit
pcre.recursion_limit是PCRE的递归限制,这个项如果设很大的值,会消耗所有进程的可用堆栈,最后导致PHP崩溃。
也可以通过修改配置来限制:
代码如下 | 复制代码 |
ini_set('pcre.recursion_limit', 99999); |
实际项目应用中,最好也对内存进行限定设置:ini_set('memory_limit', '64M'); , 这样就比较稳妥妥嘎。
来自 http://www.111cn.net/phper/php-function/45834.htm
2013-05-24 11:56 700人阅读 收藏 举报 void header ( string $string [, bool $replace = true [, int $http_response_code ]] ) : Send a raw HTTP header
下面有一些使用header的几种用法:
1、使用header函数进行跳转页面;
header('Location:'.$url);
其中$url就是将要跳转的url了。
这种用法的注意事项有以下几点:
Location 和":"之间不能有空格,否则会出现错误(注释:我刚测试了,在我本地环境下,没有跳转页面,但是也没有报错,不清楚什么原因); 在用header前不能有任何的输出(注释:这点大家都知道的,如果header之前有任何的输出,包括空白,就会出现header already sent by xxx的错误); header 后面的东西还会执行的;
2、使用header声明content-type
header('content-type:text/HTML;charset=utf-8');
这个没有什么好说的;
3、使用header返回response 状态码
header(sprintf('%s %d %s', $http_version, $status_code, $description));
样式就是这样的;
例如:header('HTTP/1.1 404 Not Found');
4、使用header在某个时间后执行跳转
header("Refresh: {$delay}; url={$url}");
其中$delay就是推迟跳转的时间,$url为需要跳转的url
例如:header('Refresh: 10; url=http://www.example.org/'); 意思为10s后跳转到http://www.eexample.org这个网站
5、使用header控制浏览器缓存
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");
6、执行http验证
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Top Secret"');
7、使用header进行下载操作
header('Content-Type: application/octet-stream');//设置内容类型
header('Content-Disposition: attachment; filename="example.zip"'); //设置MIME用户作为附件下载 如果将attachment换成inline意思为在线打开
header('Content-Transfer-Encoding: binary');//设置传输方式
header('Content-Length: '.filesize('example.zip'));//设置内容长度
// load the file to send:
readfile('example.zip');//读取需要下载的文件
基本上就是上面这些 。。。 PHP header 的几种用法,你知道几种?
1. 跳转页面
header('Location:'.$url); //Location和":"之间无空格。
复制代码
2. 声明content-type
header('content-type:text/html;charset=utf-8');
复制代码
3. 返回response状态码
header('HTTP/1.1 404 Not Found');
复制代码
4. 在某个时间后执行跳转
header('Refresh: 10; url=http://www.baidu.com/'); //10s后跳转。
复制代码
5. 控制浏览器缓存
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");
复制代码
6. 执行http验证
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Top Secret"');
复制代码
7. 执行下载操作
header('Content-Type: application/octet-stream'); //设置内容类型
header('Content-Disposition: attachment; filename="example.zip"'); //设置MIME用户作为附件
header('Content-Transfer-Encoding: binary'); //设置传输方式
header('Content-Length: '.filesize('example.zip')); //设置内容长度
复制代码
更多【干货分享】,请关注一位有情怀的工程师。
来自
http://www.thinkphp.cn/code/2064.html