最新的Web開發教程
 

PHP header() Function


<完整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參考