php header的作用就是發(fā)送原生HTTP頭,其語法是“header ( string $string [, bool $replace = true [, int $http_response_code ]] ) : void”。
創(chuàng)新互聯(lián)公司服務(wù)項目包括石景山網(wǎng)站建設(shè)、石景山網(wǎng)站制作、石景山網(wǎng)頁制作以及石景山網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,石景山網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到石景山省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
php header()的用法詳解
(PHP 4, PHP 5, PHP 7)
header — 發(fā)送原生 HTTP 頭
說明
header ( string $string [, bool $replace = true [, int $http_response_code ]] ) : void
header() 用于發(fā)送原生的 HTTP 頭。
請注意 header() 必須在任何實際輸出之前調(diào)用,不管是普通的 HTML 標(biāo)簽,還是文件或 PHP 輸出的空行,空格。這是個常見的錯誤,在通過include,require,或者其訪問其他文件里面的函數(shù)的時候,如果在header()被調(diào)用之前,其中有空格或者空行。 同樣的問題也存在于單獨的 PHP/HTML 文件中。
<html>
<?php
/* This will give an error. Note the output
* above, which is before the header() call */
header('Location: http://www.example.com/');
exit;
?>參數(shù)
string
頭字符串。
有兩種特別的頭。第一種以“HTTP/”開頭的 (case is not significant),將會被用來計算出將要發(fā)送的HTTP狀態(tài)碼。 例如在 Apache 服務(wù)器上用 PHP 腳本來處理不存在文件的請求(使用 ErrorDocument 指令), 就會希望腳本響應(yīng)了正確的狀態(tài)碼。
<?php
header("HTTP/1.0 404 Not Found");
?>第二種特殊情況是“Location:”的頭信息。它不僅把報文發(fā)送給瀏覽器,而且還將返回給瀏覽器一個 REDIRECT(302)的狀態(tài)碼,除非狀態(tài)碼已經(jīng)事先被設(shè)置為了201或者3xx。
<?php
header("Location: http://www.example.com/"); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit;
?>replace
可選參數(shù) replace 表明是否用后面的頭替換前面相同類型的頭。 默認(rèn)情況下會替換。如果傳入 FALSE,就可以強制使相同的頭信息并存。例如:
<?php
header('WWW-Authenticate: Negotiate');
header('WWW-Authenticate: NTLM', false);
?>http_response_code
強制指定HTTP響應(yīng)的值。注意,這個參數(shù)只有在報文字符串(string)不為空的情況下才有效。
返回值
沒有返回值。
更新日志:
5.1.2 這個函數(shù)現(xiàn)在可以一次性阻止多個報文信息的發(fā)送,從而作為對報文信息注入攻擊的一種防護。
Example #1 下載對話框
如果你想提醒用戶去保存你發(fā)送的數(shù)據(jù),例如保存一個生成的PDF文件。你可以使用? Content-Disposition的報文信息來提供一個推薦的文件名,并且強制瀏覽器顯示一個文件下載的對話框。
<?php
// We'll be outputting a PDF
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');
?>Example #2 緩存指令
PHP腳本總是會生成一些動態(tài)內(nèi)容,而這些內(nèi)容是不應(yīng)該被緩存的,不管是客戶端瀏覽器還是在服務(wù)器端和客戶端瀏覽器之間的任何代理。我們可以像這樣來強制設(shè)置瀏覽器和各個代理層不緩存數(shù)據(jù):
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>Note:
也許你會遇到這樣的情況,那就是即使你沒使用上面這段代碼,你的頁面也沒有被緩存。大多數(shù)情況是因為用戶可以自己設(shè)置他們的瀏覽器從而改變?yōu)g覽器默認(rèn)的緩存行為。一旦發(fā)送了上面這段報文信息,那么你就應(yīng)該重寫那些可能用到緩存了的代碼。
此外,在啟用session的情況下,session_cache_limiter()和session.cache_limiter的配置可以用來自動地生成正確的緩存相關(guān)的頭信息。
注釋
Note:
數(shù)據(jù)頭只會在SAPI支持時得到處理和輸出。
Note:
你所有需要輸出到瀏覽器的數(shù)據(jù)將會一直緩存在服務(wù)器端,直到你發(fā)送他們,這將造成比較大的資源開銷。你可以是用輸出緩沖來避開這個問題。你可以通過在腳本里使用ob_start()和ob_end_flush()或者直接在你的php.ini文件里設(shè)置output_buffering,也可以直接在服務(wù)器的配置文件里設(shè)置。
Note:
HTTP狀態(tài)信息的報文永遠(yuǎn)都是最新被發(fā)送到客戶端的,而不管header()是否是在最先發(fā)送的。報文狀態(tài)碼可能會被重寫,當(dāng)調(diào)用header()來設(shè)定新的狀態(tài)碼,除非HTTP報文已經(jīng)被發(fā)送了。
Note:
在IE 4.01和IE 5.5里有bug,要解決就升級瀏覽器吧,想必也沒人用那么遠(yuǎn)古的神器了吧。
Note: 如果安全模式(safe mode)被激活,那么腳本的uid將會被添加到WWW-Authenticate的realm部分,前提是你設(shè)置了這個頭信息的情況下(使用 HTTP 認(rèn)證)。
Note:
HTTP/1.1需要一個絕對的網(wǎng)絡(luò)資源地址(URI)來作為一個參數(shù)供? Location:使用,在其中必須包含了協(xié)議,主機地址還有完整的路徑,但是一些客戶端可以接受相對的網(wǎng)絡(luò)資源地址。你可以在一個相對的網(wǎng)路資源地址的基礎(chǔ)上使用$_SERVER['HTTP_HOST'],$_SERVER['PHP_SELF']和dirname()來組裝一個絕對的網(wǎng)路資源地址。
<?php
/* Redirect to a different page in the current directory that was requested */
$host = $_SERVER['HTTP_HOST'];
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\\\');
$extra = 'mypage.php';
header("Location: http://$host$uri/$extra");
exit;
?>Note:
在執(zhí)行Location header跳轉(zhuǎn)的時候,Session ID無法通傳遞的,即使session.use_trans_sid是激活狀態(tài)的。只能通過手動傳遞using SID的值來實現(xiàn)。
很多相關(guān)知識,請訪問PHP中文網(wǎng)!
文章名稱:phpheader()的用法詳解
轉(zhuǎn)載源于:http://chinadenli.net/article10/cjeggo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、網(wǎng)站改版、網(wǎng)站維護、App設(shè)計、企業(yè)網(wǎng)站制作、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)