如何使用phpheader()

如何使用php header()?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

在柳江等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網站設計、網站制作 網站設計制作按需開發(fā),公司網站建設,企業(yè)網站建設,品牌網站設計,營銷型網站,成都外貿網站建設,柳江網站建設費用合理。

php header的作用就是發(fā)送原生HTTP頭,其語法是“header ( string $string [, bool $replace = true [, int $http_response_code ]] ) : void”。

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() 必須在任何實際輸出之前調用,不管是普通的 HTML 標簽,還是文件或 PHP 輸出的空行,空格。這是個常見的錯誤,在通過include,require,或者其訪問其他文件里面的函數(shù)的時候,如果在header()被調用之前,其中有空格或者空行。 同樣的問題也存在于單獨的 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 服務器上用 PHP 腳本來處理不存在文件的請求(使用 ErrorDocument 指令), 就會希望腳本響應了正確的狀態(tài)碼。

<?php
header("HTTP/1.0 404 Not Found");
?>

第二種特殊情況是“Location:”的頭信息。它不僅把報文發(fā)送給瀏覽器,而且還將返回給瀏覽器一個 REDIRECT(302)的狀態(tài)碼,除非狀態(tài)碼已經事先被設置為了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 表明是否用后面的頭替換前面相同類型的頭。 默認情況下會替換。如果傳入 FALSE,就可以強制使相同的頭信息并存。例如:

<?php
header('WWW-Authenticate: Negotiate');
header('WWW-Authenticate: NTLM', false);
?>

http_response_code

強制指定HTTP響應的值。注意,這個參數(shù)只有在報文字符串(string)不為空的情況下才有效。

返回值

沒有返回值。

更新日志:

5.1.2 這個函數(shù)現(xiàn)在可以一次性阻止多個報文信息的發(fā)送,從而作為對報文信息注入攻擊的一種防護。

Example #1 下載對話框

如果你想提醒用戶去保存你發(fā)送的數(shù)據,例如保存一個生成的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)內容,而這些內容是不應該被緩存的,不管是客戶端瀏覽器還是在服務器端和客戶端瀏覽器之間的任何代理。我們可以像這樣來強制設置瀏覽器和各個代理層不緩存數(shù)據:

<?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ù)情況是因為用戶可以自己設置他們的瀏覽器從而改變?yōu)g覽器默認的緩存行為。一旦發(fā)送了上面這段報文信息,那么你就應該重寫那些可能用到緩存了的代碼。

此外,在啟用session的情況下,session_cache_limiter()和session.cache_limiter的配置可以用來自動地生成正確的緩存相關的頭信息。

注釋

Note:

數(shù)據頭只會在SAPI支持時得到處理和輸出。

Note:

你所有需要輸出到瀏覽器的數(shù)據將會一直緩存在服務器端,直到你發(fā)送他們,這將造成比較大的資源開銷。你可以是用輸出緩沖來避開這個問題。你可以通過在腳本里使用ob_start()和ob_end_flush()或者直接在你的php.ini文件里設置output_buffering,也可以直接在服務器的配置文件里設置。

Note:

HTTP狀態(tài)信息的報文永遠都是最新被發(fā)送到客戶端的,而不管header()是否是在最先發(fā)送的。報文狀態(tài)碼可能會被重寫,當調用header()來設定新的狀態(tài)碼,除非HTTP報文已經被發(fā)送了。

Note:

在IE 4.01和IE 5.5里有bug,要解決就升級瀏覽器吧,想必也沒人用那么遠古的神器了吧。

Note: 如果安全模式(safe mode)被激活,那么腳本的uid將會被添加到WWW-Authenticate的realm部分,前提是你設置了這個頭信息的情況下(使用 HTTP 認證)。

Note:

HTTP/1.1需要一個絕對的網絡資源地址(URI)來作為一個參數(shù)供? Location:使用,在其中必須包含了協(xié)議,主機地址還有完整的路徑,但是一些客戶端可以接受相對的網絡資源地址。你可以在一個相對的網路資源地址的基礎上使用$_SERVER['HTTP_HOST'],$_SERVER['PHP_SELF']和dirname()來組裝一個絕對的網路資源地址。

<?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跳轉的時候,Session ID無法通傳遞的,即使session.use_trans_sid是激活狀態(tài)的。只能通過手動傳遞using SID的值來實現(xiàn)。

關于如何使用php header()問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。

當前題目:如何使用phpheader()
文章轉載:http://muchs.cn/article26/jpijjg.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站制作、企業(yè)建站、虛擬主機、做網站、響應式網站、標簽優(yōu)化

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)