文法:
複製代碼 代碼如下:
Void header(string $string[,bool $replace=true [, int $http_response_code)
向用戶端發送原始的HTTP前序
需注意:
Header函數必須在任何實際的輸出前調用,無論是一般的html標籤、檔案中空行,或者來自php。就是在這個函數之前不能有任何形式的輸出。
參數說明:
參數 描述
string 必需。規定要發送的前序字串。
replace 可選。指示該前序是否替換之前的前序,或添加第二個前序。
預設是 true(替換)。false(允許相同類型的多個前序)。
http_response_code 可選。把 HTTP 響應代碼強製為指定的值。(PHP 4 以及更高版本可用)
常見用法執行個體:
一、發送伺服器狀態代碼
複製代碼 代碼如下:
header('HTTP/1.0 404 Not Found');
常用狀態代碼:
狀態代碼 說明
100-199 表示成功接收請求,要求用戶端繼續提交下一次請求才能完成整個處理過程
200-299 成功接收請求,並已完成整個處理過程,常用200
300-399 未完成請求,用戶端需要進一步細化請求,比如,請求的資源已經移動到一個新的地址,常用302,304
400-499 用戶端請求有誤 常用404
500-599 伺服器端出現錯誤,常用500
詳細見:HTTP&FTP相應提示資訊
二、頁面跳轉
複製代碼 代碼如下:
// 立即跳轉
header('Location: http://www.jb51.net/');
// 3秒後跳轉
header('refresh:3;url=http://www.jb51.net');
3.設定瀏覽器緩衝
強制瀏覽器不進行緩衝!
[code]
//header('Expires:-1');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Cache-Control:no-cache,must-revalidate');
header('pragma:no-cache');
header('Last-Modified: '. date('D, j M Y H:i:s T') );
說明:
Expires後的時間必須是GMT格式的 如:gmdate(“M d Y H:i:s”);
Cache-control常見的取值有private、no-cache、max-age、must-revalidate等,預設為private。其作用根據不同的重新瀏覽方式分為以下幾種情況。
Cache-directive 說明
public 所有內容都將被緩衝
private 內容只緩衝到私人緩衝中
no-cache 所有內容都不會被緩衝
no-store 所有內容都不會被緩衝到緩衝或 Internet 臨時檔案中
must-revalidation/proxy-revalidation 如果緩衝的內容失效,請求必鬚髮送到伺服器/代理以進行重新驗證
max-age=xxx (xxx is numeric) 緩衝的內容將在 xxx 秒後失效, 這個選項只在HTTP 1.1可用, 並如果和Last-Modified一起使用時, 優先順序較高
開啟新視窗
如果指定cache-control的值為private、no-cache、must-revalidate,那麼開啟新視窗訪問時都會重新訪問伺服器。而如果指定了max-age值,那麼在此值內的時間就不會重新訪問伺服器,如:
複製代碼 代碼如下:
header('cache-control:max-age=5');
表示當訪問此網頁後的5秒內不會再次訪問伺服器
在地址欄斷行符號
如果值為private或Must-revalidate,則只有第一次訪問時會訪問伺服器,以後就不在訪問。如果值為no-cache,那麼每次都會訪問。如果值為max-age,則在到期之前不會重複訪問。
按後退按鈕
如果值為private、must-revalidate、max-age,則不會重訪問,而如果為no-cache,則每次都重複訪問
按重新整理按鈕
無論何值,都會重複訪問。當指定Cache-control值為“no-cache”時,訪問此頁面不會在Internet臨時文章夾留下頁面備份。另外,通過指定“Expires”值也會影響到緩衝。例如,指定Expires值為一個早已過去的時間,那麼訪問此網時若重複在地址欄按斷行符號,那麼每次都會重複訪問:
Expires: Fri, 31 Dec 1999 16:00:00 GMT
關於”Last-Modified
在瀏覽器第一次請求某一個URL時,伺服器端的返回狀態會是200,內容是你請求的資源,同時有一個Last-Modified的屬性標記此檔案在服務期端最後被修改的時間,格式類似這樣:
Last-Modified: Fri, 12 May 2006 18:53:33 GMT
用戶端第二次請求此URL時,根據 HTTP 協議的規定,瀏覽器會向伺服器傳送 If-Modified-Since 前序,詢問該時間之後檔案是否有被修改過:
If-Modified-Since: Fri, 12 May 2006 18:53:33 GMT
如果伺服器端的資源沒有變化,則自動返回 HTTP 304 (Not Changed.)狀態代碼,內容為空白,這樣就節省了傳輸資料量。當伺服器端代碼發生改變或者重啟伺服器時,則重新發出資源,返回和第一次請求時類似。從而保證不向用戶端重複發出資源,也保證當伺服器有變化時,用戶端能夠得到最新的資源。
Last-Modified提高效能
聰明的開發人員會把Last-Modified 和ETags請求的http前序一起使用,這樣可利用用戶端(例如瀏覽器)的緩衝。因為伺服器首先產生 Last-Modified/Etag標記,伺服器可在稍後使用它來判斷頁面是否已經被修改。本質上,用戶端通過將該記號傳回伺服器要求伺服器驗證其(用戶端)緩衝。
過程如下:
用戶端請求一個頁面(A)
伺服器返回頁面A,並在給A加上一個Last-Modified
用戶端展現該頁面,並將頁面連同Last-Modified一起緩衝
客戶再次請求頁面A,並將上次請求時伺服器返回的Last-Modified一起傳遞給伺服器
伺服器檢查該Last-Modified,並判斷出該頁面自上次用戶端請求之後還未被修改,直接返迴響應304和一個空的響應體。
三、檔案下載
比如下載一個pdf檔案
複製代碼 代碼如下:
// 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 1.pdf
readfile('1.pdf');
其實這樣要更好的瞭解這些!
複製代碼 代碼如下:
header('content-type:application/octet-sream');
Header('Accept-Ranges:bytes');
//依位元組返回
Header('content-disposition:attachement;filename="檔案名稱"');
Header('Accept-length:'.$filesize);
http://www.bkjia.com/PHPjc/825013.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/825013.htmlTechArticle文法: 複製代碼 代碼如下: Void header(string $string[,bool $replace=true [, int $http_response_code) 向用戶端發送原始的HTTP前序 需注意: Header函數必須在...