欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

php header函数的详解

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和https
3.实现文件下载
查看源代码
打印帮助
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”);
但是我发现实际上浏览器返回的响应却是:
查看源代码
打印帮助
// 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://jingyan.baidu.com/article/0320e2c1d9ac1e1b87507bc7.html

PHP中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"'); //设置MIME用户作为附件下载 如果将attachment换成inline意思为在线打开
  header('Content-Transfer-Encoding: binary');//设置传输方式
  header('Content-Length: '.filesize('example.zip'));//设置内容长度
  // load the file to send:
  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

 


PHP 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"'); //设置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.htm

    php header函数的详解

    header函数在php中是发前一些头部信息的,如果我们可以直接使用它来做301跳转等,下面我来总结关于header函数用法与一些常用见问题解决方法。

    发送一个原始 HTTP 标头[Http Header]到客户端。标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔

    例1

     代码如下复制代码

    <?PHP
    Header(“Location: http://www.111cn.net”;);
    exit; //在每个重定向之后都必须加上“exit”,避免发生错误后,继续执行。
    ?>

    禁止页面在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头

    酷笔记 酷笔记 2017-01-10 08:57:47
    来自  https://www.douban.com/note/601549192/


    PHP常用http头

     
    浏览:126 发布日期:2017/01/10 分类:技术分享 关键字: php
    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
    来自 http://www.thinkphp.cn/topic/45349.html


     

    PHP preg_match正则表达式的使用

    www.111cn.net 更新:2013-03-27 编辑:swteen 来源:转载
    在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
     

    php中的header的用法(我曾经在此放过过错)

     700人阅读 评论(0) 收藏 举报
     分类:
     
    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/zhoujn90/article/details/8969324

    PHP header 的几种用法

     
    浏览:1172 发布日期:2016/06/13 分类:功能实现 关键字: header
    PHP header 的几种用法,你知道几种?
    1. 跳转页面
    1. header('Location:'.$url);  //Location和":"之间无空格。
    复制代码
     
    2. 声明content-type
    1. header('content-type:text/html;charset=utf-8');
    复制代码
     
    3. 返回response状态码
    1. header('HTTP/1.1 404 Not Found');
    复制代码
     
    4. 在某个时间后执行跳转
    1. header('Refresh: 10; url=http://www.baidu.com/');  //10s后跳转。
    复制代码
     
    5. 控制浏览器缓存
    1. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    2. header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
    3. header("Cache-Control: no-cache, must-revalidate");
    4. header("Pragma: no-cache");
    复制代码
     
    6. 执行http验证
    1. header('HTTP/1.1 401 Unauthorized');
    2. header('WWW-Authenticate: Basic realm="Top Secret"');
    复制代码
     
    7. 执行下载操作
    1. header('Content-Type: application/octet-stream'); //设置内容类型
    2. header('Content-Disposition: attachment; filename="example.zip"'); //设置MIME用户作为附件
    3. header('Content-Transfer-Encoding: binary'); //设置传输方式
    4. header('Content-Length: '.filesize('example.zip')); //设置内容长度
    复制代码
     
    更多【干货分享】,请关注一位有情怀的工程师。

    来自  http://www.thinkphp.cn/code/2064.html

     

    普通分类: