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');
?> 函數