1)header() 必须在任何实际输出以前调用,不管是来自普通的 HTML 标记,空行或者 PHP。有一个常见错误就是在经过 include(),require() 或一些其它的文件存取类函数读取代码时,有一些空格或者空行在调用 header() 以前被发送了出去。一样在一个单独的 PHP/HTML 文件中这个错误也很广泛。
<?php php
<html> html
/* 这将产生一个错误,由于在调 header()
* 以前已经输出了东西 */
header('Location: http://www.example.com/');
?> 浏览器
能够经过一些输出缓冲函数来解决这个问题,例如 ob_start() 及 ob_end_flush() 缓存
2)PHP 脚本一般会产生一些动态内容,这些内容必须不被浏览器或代理服务器缓存。不少代理服务器和浏览器均可以被下面的方法禁止缓存:
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // 过去的时间 服务器
3)若是想提示用户保存所发送的数据,例如一个生成的 PDF 文件,能够经过发送 Content-Disposition 标头提供推荐的文件名来强制浏览器弹出一个保存文件对话框。 app
<?php
// 这样将会直接输出一个 PDF 文件
header('Content-type: application/pdf');
// 这样作就会提示下载 PDF 文件 downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');
// 这是 original.pdf 的源文件
readfile('original.pdf');
?> 函数