PHP Header使用注意事项

来源:互联网 发布:linux jdk1.8安装 编辑:程序博客网 时间:2024/04/29 10:07

    最近在页面转向的时候出了问题,可总找不到错误.查了好久才发现是header使用错误,在使用了header重定向之后要及时exit终止程序执行.看样子header里面的知识好深奥啊,自己的知识还是很欠缺.

header

 header -- 发送一个原始 HTTP 标头
 

说明

void header ( string string [, bool replace [, int http_response_code]] )

header() 函数用来发送一个原始 HTTP 标头。

可选参数 replace 指明是替换掉前一条类似的标头还是增加一条相同类型的标头。默认为替换,但如果将其设为 FALSE 则可以强制发送多个同类标头。例如:

<?php
header
('WWW-Authenticate: Negotiate'
);
header('WWW-Authenticate: NTLM', false
);
?>

第二个可选参数 http_response_code 强制将 HTTP 响应代码设为指定值。

第二种特殊情况是以“Location:”标头。它不只是把这个标头发送回浏览器,它还将一个 REDIRECT(302)状态码返回给浏览器,除非之前已经发出了某个 3xx 状态码。

<?php
header
("Location: http://www.example.com/");
/* 重定向浏览器 */

/* 确保重定向后,后续代码不会被执行 */
exit;    /*这里一定要加上exit,我的程序就犯了这个错误*/
?>

要记住 header() 必须在任何实际输出之前调用,不论是来自普通的 HTML 标记,空行或者 PHP。有一个常见错误就是在通过 include()require() 或一些其它的文件存取类函数读取代码时,有一些空格或者空行在调用 header() 之前被发送了出去。同样在一个单独的 PHP/HTML 文件中这个错误也很普遍。   <html>
<?php
/* 这将产生一个错误,因为在调 header()
* 之前已经输出了东西 */
header('Location: http://www.example.com/'
);
?>
如果想提示用户保存所发送的数据,例如一个生成的 PDF 文件,可以通过发送 Content-Disposition 标头提供推荐的文件名来强制浏览器弹出一个保存文件对话框。   <?php
// 这样将会直接输出一个 PDF 文件
header('Content-type: application/pdf'
);

// 这样做就会提示下载 PDF 文件 downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"'
);

// 这是 original.pdf 的源文件
readfile('original.pdf'
);
?>
 

 
原创粉丝点击