header() 函數向客戶端發送原始的HTTP 標頭。
認識到一點很重要,即必須在任何實際的輸出被發送之前調用header() 函數(在PHP 4 以及更高的版本中,您可以使用輸出緩衝來解決這個問題):
<html><?php// This results in an error.// The output above is before the header() callheader('Location: http://www.example.com/');?>
header(string,replace,http_response_code)
參數 | 描述 |
---|---|
string | 必需。規定要傳送的報頭字串。 |
replace | 可選。指示該報頭是否替換先前的報頭,或新增第二個報頭。預設是TRUE(替換)。 FALSE(允許相同類型的多個報頭)。 |
http_response_code | 可選。把HTTP 回應碼強制為指定的值。 (PHP 4.3 以及更高版本可用) |
註:從PHP 4.4 之後,此函數防止一次發送多個標頭。這是對頭部注入攻擊的保護措施。
禁用頁面快取:
<?php// Date in the pastheader("Expires: Mon, 26 Jul 1997 05:00:00 GMT");header("Cache-Control: no-cache");header("Pragma: no-cache") ;?><html><body>......
註:使用者可能會設定一些選項來更改瀏覽器的預設快取設定。透過發送上面的報頭,您可以覆蓋任何這些設置,強制瀏覽器不進行快取!
提示使用者儲存一個產生的PDF 檔案(Content-Disposition 標頭用於提供一個建議的檔案名,並強制瀏覽器顯示儲存對話方塊):
<?phpheader("Content-type:application/pdf");// It will be called downloaded.pdfheader("Content-Disposition:attachment;filename='downloaded.pdf'");// The PDF source is in original .pdfreadfile("original.pdf");?><html><body>......
註:微軟IE 5.5 存在一個阻止以上機制的bug。透過升級為Service Pack 2 或更高的版本,可以解決該bug。