PHP HTTP 函數php
header() 函數向客戶端發送原始的 HTTP 報頭。html
認識到一點很重要,即必須在任何實際的輸出被髮送以前調用 header() 函數(在 PHP 4 以及更高的版本中,您可使用輸出緩存來解決此問題):瀏覽器
<html> <?php // 結果出錯 // 在調用 header() 以前已存在輸出 ?>header('Location: http://www.example.com/');
header(string,replace,http_response_code)
參數 | 描述 |
---|---|
string | 必需。規定要發送的報頭字符串。 |
replace | 可選。指示該報頭是否替換以前的報頭,或添加第二個報頭。緩存 默認是 true(替換)。false(容許相同類型的多個報頭)。app |
http_response_code | 可選。把 HTTP 響應代碼強制爲指定的值。(PHP 4 以及更高版本可用) |
註釋:從 PHP 4.4 以後,該函數防止一次發送多個報頭。這是對頭部注入攻擊的保護措施。函數
<?php // Date in the past ?> <html> <body> ... ...header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Cache-Control: no-cache"); header("Pragma: no-cache");
註釋:用戶可能會設置一些選項來更改瀏覽器的默認緩存設置。經過發送上面的報頭,您能夠覆蓋任何這些設置,強制瀏覽器不進行緩存!code
提示用戶保存一個生成的 PDF 文件(Content-Disposition 報頭用於提供一個推薦的文件名,並強制瀏覽器顯示保存對話框):htm
<?php // 文件將被稱爲 downloaded.pdf // PDF 源在 original.pdf 中 readfile("original.pdf"); ?> <html> <body> ... ...header("Content-type:application/pdf");header("Content-Disposition:attachment;filename='downloaded.pdf'");
註釋:微軟 IE 5.5 存在一個阻止以上機制的 bug。經過升級爲 Service Pack 2 或更高的版本,能夠解決該 bug。字符串