header說明void header ( string string [, bool replace [, int http_response_code]] )header() 函數用來傳送一個原始 HTTP 標頭。有關 HTTP 標頭的更多內容見 HTTP/1.1 規範。 可選參數 replace 指明是置換掉前一條類似的標頭還是增加一條相同類型的標頭。預設為置換,但若果將其設為 FALSE 則可以強制傳送多個同類標頭。例如:
第二個可選參數 http_response_code 強制將 HTTP 響應代碼設為指定值(此參數是 PHP 4.3.0 新加的)。 有兩種特殊的 header 呼叫。第一種是標頭以字串「HTTP/」(大小寫不重要)開頭的,可以用來確定要傳送的 HTTP 狀態碼。例如,若果配置了 Apache 用 PHP 來處理找不到檔案的錯誤處理請求(使用 ErrorDocument 指令),需要確保腳本產生了正確的狀態碼。
第二種特殊情況是以「Location:」標頭。它不只是把這個標頭發送回瀏覽器,它還將一個 REDIRECT(302)狀態碼返回給瀏覽器,除非之前已經發出了某個 3xx 狀態碼。
PHP 腳本通常會產生一些動態內容,這些內容必須不被瀏覽器或代理伺服器暫存。很多代理伺服器和瀏覽器都可以被下面的方法禁止暫存:
要記住 header() 必須在任何實際輸出之前呼叫,不論是來自普通的 HTML 旗標,空行或是 PHP。有一個常見錯誤就是在通過 include(),require() 或一些其它的檔案存取類函數讀取代碼時,有一些空格或是空行在呼叫 header() 之前被傳送了出去。同樣在一個單獨的 PHP/HTML 檔案中這個錯誤也很普遍。
若果想提示會員儲存所傳送的資料,例如一個建立的 PDF 檔案,可以通過傳送 Content-Disposition 標頭提供推薦的檔案名來強制瀏覽器跳出一個儲存檔案對話框。
參見 headers_sent(),setcookie() 和 HTTP 認證一章。 | ||||