• php header函数


    Header()函数—is used to send raw HTTP headers.

    1. 重定向

             <?php

                       header(“Location: http://www.jb51.net”;);

                       exit; //在每个重定向之后都必须加上”exit”,避免发生错误,继续执行。

             ?>

             <?php

                       header(“refresh: 2;url=http://www.jb51.net”;);

                       echo ”正在加载,请稍等…<br/> 三秒后自动跳转值<a

    href=”http://www.jb51.net” mce_href=” http://www.jb51.net “>百度</a> ”;

             ?>

    2. 禁止页面在IE 中缓存

    不是获取Proxy或cache中的资料

             <?php

                       header(‘Expires: Fri, 4 Dec 2010 09:00:00 GMT’);// 设置过期时间

                       header(‘Last-Modified:’.gmdate(‘D, d  M Y H:i:s’).’GMT’);

                       header(‘Cache-control: no-store,no-cache,must-revalidat’);

                       header(‘Cache-control: post-check=0, pre-check=0’, false);

                       header(‘Program: no-cache’);//兼容 http1.0和https

             ?>

    3. 让使用者找不到档案信息

    1php 的header()函数向浏览器发送 status 标头

             header(‘Status: 404 Not Found’);

             浏览器返回状态信息。

    2标准写法  header(‘http/1.0  404  Not Found’);

    1. 部分是HTTP协议的版本号(HTTP-Version)

    2. 状态代码(Status)

    3. 原因短语( Reason-Phrase)

    4. 下载文件

    html 标签就可以实现普通文件下载,如果为了保密,就不能把文件链接告诉别人,可以用header函数实现文件下载。程序发送header信息是用来告诉Apache和浏览器下载文件的相关信息的。

             <?php

                       function download_by_path($path_name,$save_name){

                                ob_end_clean();

                                $hfile=fopen($path_name,”rb”) or die(“Can not find file: $path_name ”);

                                header(“Content-type: application/octet-stream”);

                                //Content-type 的含义代表文件MIME类型是文件流格式,设置为上述形式

                                //浏览器就会知道,这是一个文件流格式的文件并提示用户下载。

                                header(“Content-Transfer-Encoding: binary”);

                                //以二进制的方式编码

                                header(“Accept-Ranges:  bytes”);

                                //Accept-Ranges 是一个响应头标,它允许服务器指明将在给定的偏移和长度

                                //处,为资源组成部分的接受请求,该头标的值被理解为请求范围的度量单位。

                                header(“Content-length: ”filesize($path_name));

                                //Content-length 是指定包含于请求或响应中数据的字节长度。

                                header(“Content-Disposition: attachment;filename=”$save_name””);

                                //Content-Disposition: attachment 告诉浏览器,文件可以当做附件被下载的,

                                //下载后的文件名称为 $save_name 变量的值。

                                while(!feof($hfile)){

                                         echo fread($hfile,1024*1024);

    }

    fclose($hfile);

    }

    html标签下载

                                <a href=”Web.rar”>download</a>

    浏览器支持能够打开的格式,它都会默认直接在线打开(比如word或图片),不支持的格式,它就会弹出下载提示。最好是做成 .rar 格式。

    5. header 函数前输出内容

    一般来说在header函数前不能输出html内容,类似的还有 setcookie()和 session函数,这些函数需要在输出流中增加消息头部信息。

    原因是:PHP脚本开始执行时,它可以同时发送http 消息头部(标题)信息和主体信息。http消息头部(来自header()或setcookie()函数)并不会立即发送,相反它被保存到一个列表中。这样就可以允许你修改标头信息,包括缺省的标头。但是,一旦脚本发送了任何非标头的输出(例如,使用HTML或print()调用),那么PHP就必须先发送完所有的Header,然后终止HTTP header。而后继续发送主体数据。从这时开始,任何添加或修改Header信息的试图都是不允许的。

    解决办法:1php.ini 打开缓存(output_buffering)

    2使用缓存函数  ob_start() , ob_end_flush()等

    缓存被启动时,在脚本发送输出时,PHP并不发送 HTTP header 。相反,它将此输出通过管道( pipe) 输出到动态增加的缓存中。你仍然可以修改/添加header,或者设置cookie,因为header实际上并没有发送。当全部脚本终止时,PHP将自动发送HTTP header到浏览器,然后在发送输出缓存中的内容。

  • 相关阅读:
    gerrit 修改前一次提交的方法(转载)
    数据结构实验之图论六:村村通公路 【克鲁斯卡尔算法】
    数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
    数据结构实验之图论四:迷宫探索【dfs 求路径】
    Java 【打印俄文的英文字母】
    【留给自己的独白,长大了】
    Java 【 ArrayList应用 】 (SDUT 4069 C~K的班级)
    你的勇气去哪里了
    Java的 「 “ 结构体 ”」 与 「 “ 自定义排序 ” 」
    Java 中的 SimpleDateFormat 【 parse 和 format 】【转换时间格式】
  • 原文地址:https://www.cnblogs.com/air5215/p/5351789.html
Copyright © 2020-2023  润新知