<完整PHP HTTP參考
定義和用法
的header()函數發送一個原始HTTP標頭到客戶端。
此外還需要注意的重要header()必須在任何實際的輸出被發送之前調用(在PHP 4及更高版本,可以使用輸出緩存來解決這個問題):
<html>
<?php
// This results in an error.
// The output above is before the header() call
header('Location: http://www.example.com/');
?>
句法
header(string,replace,http_response_code)
參數 | 描述 |
---|---|
string | 需要。 指定頭字符串發送 |
replace | 可選的。 指示頭是否應該取代以前或添加第二個頭部。 默認值是true (will replace) 。 FALSE (allows multiple headers of the same type) |
http_response_code | 可選的。 迫使HTTP響應代碼為指定的值(available in PHP 4.3 and higher) |
提示和注意
Note:由於PHP 4.4此功能防止多個頭在一次要被發送。 這是對頭部注入攻擊保護。
實施例1
防止頁面緩存:
<?php
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
?>
<html>
<body>
...
...
Note:有跡象表明,用戶可以設置來改變瀏覽器的默認緩存設置選項。 通過發送上述標題,你應該重寫任何這些設置和強制瀏覽器不緩存!
實施例2
讓用戶被提示保存一個生成的PDF文件(內容處理標頭用於提供推薦的文件名,並強制瀏覽器以顯示保存對話框):
<?php
header("Content-type:application/pdf");
// It will be called downloaded.pdf
header("Content-Disposition:attachment;filename='downloaded.pdf'");
// The PDF source is in original.pdf
readfile("original.pdf");
?>
<html>
<body>
...
...
Note:有一個在微軟IE 5.5是可以避免這種情況的工作中的錯誤。 該漏洞可以通過升級到Service Pack 2或更高版本來解決。
<完整PHP HTTP參考