PHP header() 函數(shù)
定義和用法
header() 函數(shù)向客戶端發(fā)送原始的 HTTP 報頭。
認(rèn)識到一點很重要,即必須在任何實際的輸出被發(fā)送之前調(diào)用 header() 函數(shù)(在 PHP 4 以及更高的版本中,您可以使用輸出緩存來解決此問題):
<html>
<?php
// 結(jié)果出錯
// 在調(diào)用 header() 之前已存在輸出
header('Location: http://www.example.com/');
?>
語法
header(string,replace,http_response_code)
參數(shù) | 描述 |
---|---|
string | 必需。規(guī)定要發(fā)送的報頭字符串。 |
replace |
可選。指示該報頭是否替換之前的報頭,或添加第二個報頭。 默認(rèn)是 true(替換)。false(允許相同類型的多個報頭)。 |
http_response_code | 可選。把 HTTP 響應(yīng)代碼強(qiáng)制為指定的值。(PHP 4 以及更高版本可用) |
提示和注釋
注釋:從 PHP 4.4 之后,該函數(shù)防止一次發(fā)送多個報頭。這是對頭部注入攻擊的保護(hù)措施。
例子
例子 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>
...
...
注釋:用戶可能會設(shè)置一些選項來更改瀏覽器的默認(rèn)緩存設(shè)置。通過發(fā)送上面的報頭,您可以覆蓋任何這些設(shè)置,強(qiáng)制瀏覽器不進(jìn)行緩存!
例子 2
提示用戶保存一個生成的 PDF 文件(Content-Disposition 報頭用于提供一個推薦的文件名,并強(qiáng)制瀏覽器顯示保存對話框):
<?phpheader("Content-type:application/pdf");
// 文件將被稱為 downloaded.pdfheader("Content-Disposition:attachment;filename='downloaded.pdf'");
// PDF 源在 original.pdf 中 readfile("original.pdf"); ?> <html> <body> ... ...
注釋:微軟 IE 5.5 存在一個阻止以上機(jī)制的 bug。通過升級為 Service Pack 2 或更高的版本,可以解決該 bug。