您的位置:首页 > 编程语言 > PHP开发

PHP Header使用注意事项

2007-08-13 17:04 726 查看
最近在页面转向的时候出了问题,可总找不到错误.查了好久才发现是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');
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: