Jquery中文網 www.prqmtc.live
Jquery中文網 >  腳本編程  >  php  >  正文 PHP中HEADER頭消息詳解

PHP中HEADER頭消息詳解

發布時間:2014-11-12   編輯:www.prqmtc.live
PHP中經常需要通過HEADER發送HTTP標頭消息,以便告訴瀏覽器一些處理狀態(Status)或顯示參量,最典型的就是發送頁面處理HEADER和發送狀態HEADER。

無論是發送哪種HEADER消息,都必須保證在發送HEADER之前沒有輸出任何信息到終端瀏覽器。

一、使用HEADER發送文本類型頭信息
例1:
 

復制代碼 代碼如下:
<?php
header("Content-Type: text/html; charset=UTF-8");//告知各位觀眾下面將要輸出的文本類型
?>


例1輸出HEADER告訴瀏覽器將要輸出的文本編碼格式為UTF-8。這在全頁面PHP處理上是必須的,否則可能會引起終端瀏覽器顯示亂碼或空白頁顯示現象。由于PHP指定在HEADER輸出前不能有任何輸出信息,包括空格,所以當頁面運行出現HEADER信息已經發送的提示時候,需要首先檢查在HEADER之前是否輸出了某些信息,包括本PHP頁面的包含頭文件是否輸出信息。
如果需要輸出文件提示下載可使用如下方法:
 

復制代碼 代碼如下:
<?php
header("Content-type: application/octet-stream");//FILE流
header("Accept-Ranges: bytes");
header("Accept-Length: $filesize");//提示將要接收的文件大小
header("Content-Disposition: attachment; filename=".$fname); //提示終端瀏覽器下載操作
?>
 

如果是PDF格式也可用header("Content-type: application/pdf");其它格式類似處理,不過上面的例子是個下載文件流通例,但是指定詳細的文本格式似乎對瀏覽器的默認處理似乎更好,比如讓播放器自動播放下載音樂、或PDF編輯器自動打開遠程PDF文檔等。

附Content-type的MIME類型說明:
 

復制代碼 代碼如下:
<?php
$mimetypes = array(
        'ez' => 'application/andrew-inset',
        'hqx' => 'application/mac-binhex40',
        'cpt' => 'application/mac-compactpro',
        'doc' => 'application/msword',
        'bin' => 'application/octet-stream',
        'dms' => 'application/octet-stream',
        'lha' => 'application/octet-stream',
        'lzh' => 'application/octet-stream',
        'exe' => 'application/octet-stream',
        'class' => 'application/octet-stream',
        'so' => 'application/octet-stream',
        'dll' => 'application/octet-stream',
        'oda' => 'application/oda',
        'pdf' => 'application/pdf',
        'ai' => 'application/postscript',
        'eps' => 'application/postscript',
        'ps' => 'application/postscript',
        'smi' => 'application/smil',
        'smil' => 'application/smil',
        'mif' => 'application/vnd.mif',
        'xls' => 'application/vnd.ms-excel',
        'ppt' => 'application/vnd.ms-powerpoint',
        'wbxml' => 'application/vnd.wap.wbxml',
        'wmlc' => 'application/vnd.wap.wmlc',
        'wmlsc' => 'application/vnd.wap.wmlscriptc',
        'bcpio' => 'application/x-bcpio',
        'vcd' => 'application/x-cdlink',
        'pgn' => 'application/x-chess-pgn',
        'cpio' => 'application/x-cpio',
        'csh' => 'application/x-csh',
        'dcr' => 'application/x-director',
        'dir' => 'application/x-director',
        'dxr' => 'application/x-director',
        'dvi' => 'application/x-dvi',
        'spl' => 'application/x-futuresplash',
        'gtar' => 'application/x-gtar',
        'hdf' => 'application/x-hdf',
        'js' => 'application/x-javascript',
        'skp' => 'application/x-koan',
        'skd' => 'application/x-koan',
        'skt' => 'application/x-koan',
        'skm' => 'application/x-koan',
        'latex' => 'application/x-latex',
        'nc' => 'application/x-netcdf',
        'cdf' => 'application/x-netcdf',
        'sh' => 'application/x-sh',
        'shar' => 'application/x-shar',
        'swf' => 'application/x-shockwave-flash',
        'sit' => 'application/x-stuffit',
        'sv4cpio' => 'application/x-sv4cpio',
        'sv4crc' => 'application/x-sv4crc',
        'tar' => 'application/x-tar',
        'tcl' => 'application/x-tcl',
        'tex' => 'application/x-tex',
        'texinfo' => 'application/x-texinfo',
        'texi' => 'application/x-texinfo',
        't' => 'application/x-troff',
        'tr' => 'application/x-troff',
        'roff' => 'application/x-troff',
        'man' => 'application/x-troff-man',
        'me' => 'application/x-troff-me',
        'ms' => 'application/x-troff-ms',
        'ustar' => 'application/x-ustar',
        'src' => 'application/x-wais-source',
        'xhtml' => 'application/xhtml+xml',
        'xht' => 'application/xhtml+xml',
        'zip' => 'application/zip',
        'au' => 'audio/basic',
        'snd' => 'audio/basic',
        'mid' => 'audio/midi',
        'midi' => 'audio/midi',
        'kar' => 'audio/midi',
        'mpga' => 'audio/mpeg',
        'mp2′ => 'audio/mpeg',
        'mp3′ => 'audio/mpeg',
        'aif' => 'audio/x-aiff',
        'aiff' => 'audio/x-aiff',
        'aifc' => 'audio/x-aiff',
        'm3u' => 'audio/x-mpegurl',
        'ram' => 'audio/x-pn-realaudio',
        'rm' => 'audio/x-pn-realaudio',
        'rpm' => 'audio/x-pn-realaudio-plugin',
        'ra' => 'audio/x-realaudio',
        'wav' => 'audio/x-wav',
        'pdb' => 'chemical/x-pdb',
        'xyz' => 'chemical/x-xyz',
        'bmp' => 'image/bmp',
        'gif' => 'image/gif',
        'ief' => 'image/ief',
        'jpeg' => 'image/jpeg',
        'jpg' => 'image/jpeg',
        'jpe' => 'image/jpeg',
        'png' => 'image/png',
        'tiff' => 'image/tiff',
        'tif' => 'image/tiff',
        'djvu' => 'image/vnd.djvu',
        'djv' => 'image/vnd.djvu',
        'wbmp' => 'image/vnd.wap.wbmp',
        'ras' => 'image/x-cmu-raster',
        'pnm' => 'image/x-portable-anymap',
        'pbm' => 'image/x-portable-bitmap',
        'pgm' => 'image/x-portable-graymap',
        'ppm' => 'image/x-portable-pixmap',
        'rgb' => 'image/x-rgb',
        'xbm' => 'image/x-xbitmap',
        'xpm' => 'image/x-xpixmap',
        'xwd' => 'image/x-xwindowdump',
        'igs' => 'model/iges',
        'iges' => 'model/iges',
        'msh' => 'model/mesh',
        'mesh' => 'model/mesh',
        'silo' => 'model/mesh',
        'wrl' => 'model/vrml',
        'vrml' => 'model/vrml',
        'css' => 'text/css',
        'html' => 'text/html',
        'htm' => 'text/html',
        'asc' => 'text/plain',
        'txt' => 'text/plain',
        'rtx' => 'text/richtext',
        'rtf' => 'text/rtf',
        'sgml' => 'text/sgml',
        'sgm' => 'text/sgml',
        'tsv' => 'text/tab-separated-values',
        'wml' => 'text/vnd.wap.wml',
        'wmls' => 'text/vnd.wap.wmlscript',
        'etx' => 'text/x-setext',
        'xsl' => 'text/xml',
        'xml' => 'text/xml',
        'mpeg' => 'video/mpeg',
         'mpg' => 'video/mpeg',
        'mpe' => 'video/mpeg',
        'qt' => 'video/quicktime',
        'mov' => 'video/quicktime',
        'mxu' => 'video/vnd.mpegurl',
        'avi' => 'video/x-msvideo',
        'movie' => 'video/x-sgi-movie',
        'ice' => 'x-conference/x-cooltalk',
);
?>

二、使用HEADER發送狀態(Status)信息
當我們在響應瀏覽器操作時候,可能需要輸出一些提示狀態信息,比如訪問的文件不存(404狀態)在或者文件被轉移(301狀態)等,告訴用戶(包括搜索引擎)所訪問頁面的當前狀態,這在實際使用中對站長非常重要,因為這直接影響到搜索引擎對當前頁面的判定。當前對于301固定轉移(HTTP/1.1 301 Moved Permanently)我們也可以采用其它方式(.htaccess或IIS重定向),但是了解PHP自編程解決這些頁面狀態提示會加深自己對瀏覽器狀態的認知。
HEADER狀態消息頭格式如下:
header("第一部分 第二部分 第三部分");
其中第一部分為HTTP協議的版本號(HTTP-Version),第二部分為將要發送的狀態代碼(Status),第三部分為狀態原因(Reason-Phrase) ,三部分中間用一個空格分割,第一部分和第二部分都是必需,第三部分的狀態原因為可選項,一般推薦按照標準寫出(參下文)。
例2:
 

復制代碼 代碼如下:
<?php
header("HTTP/1.1 404 Not Found");
?>


例2實際在使用中很少用到的,感覺有點忽悠終端瀏覽者的意思。
最經常遇到是下面的例3:
 

復制代碼 代碼如下:
<?php
header("HTTP/1.1 301 Moved Permanently");//301永久遷移
header("Location: http://www.jquerycn.cn");//跳轉新URL地址,默認Location可能會發送302頭,筆者暫不確定。
?>
 

此語句告訴搜索引擎或瀏覽者,本頁面已經被“螞蟻搬家”了,走,我帶你看看新家去(新網頁)。

下面專門把W3上Header狀態代碼(Status)羅列一下供各位使用參考:
1、狀態碼類(Status)定義
1xx類:Informational - Request received, continuing process(信息狀態碼類:請求已收到,繼續處理)
2xx類:Success - The action was successfully received, understood,and accepted(成功狀態碼類:本次操作已收到并處理OK)
3xx類:Redirection - Further action must be taken in order to complete the request (重定向狀態碼類:完成請求前必須進一步執行操作)
4xx類:Client Error - The request contains bad syntax or cannot be fulfilled(發往客戶端的錯誤狀態碼類:請求包含語法錯誤或請求不能完成)
5xx類:Server Error - The server failed to fulfill an apparently valid request (服務器端的錯誤狀態碼類:服務器執行合法請求失敗)
2、常用狀態碼(Status)列表(部分):
| "100" ; Continue
| "101" ; Switching Protocols

| "200" ; OK
| "201" ; Created
| "202" ; Accepted
| "203" ; Non-Authoritative Information
| "204" ; No Content
| "205" ; Reset Content
| "206" ; Partial Content

| "300" ; Multiple Choices
| "301" ; Moved Permanently
| "302" ; Moved Temporarily
| "303" ; See Other
| "304" ; Not Modified
| "305" ; Use Proxy
| "400" ; Bad Request
| "401" ; Unauthorized
| "402" ; Payment Required
| "403" ; Forbidden
| "404" ; Not Found
| "405" ; Method Not Allowed
| "406" ; Not Acceptable
| "407" ; Proxy Authentication Required
| "408" ; Request Time-out
| "409" ; Conflict
| "410" ; Gone
| "411" ; Length Required
| "412" ; Precondition Failed
| "413" ; Request Entity Too Large
| "414" ; Request-URI Too Large
| "415" ; Unsupported Media Type

| "500" ; Internal Server Error
| "501" ; Not Implemented
| "502" ; Bad Gateway
| "503" ; Service Unavailable
| "504" ; Gateway Time-out
| "505" ; HTTP Version not supported

另外我們還可以使用PHP 的HEADER發送一些緩存參數命令、超期命令等,例如:
 

復制代碼 代碼如下:
<?php
header("Cache-Control: no-cache, must-revalidate"); //不要緩存
header("Expires: Fri, 1 Dec 2099 08:00:00 GMT"); // 頁面過期時間
?>

您可能感興趣的文章:
php header函數使用要點
PHP header()函數使用詳解
PHP中HEADER頭消息詳解
php實現頁面跳轉的幾種方法
php獲取客戶端及服務器相關信息
php報錯:Cannot send session cookie – headers already sent by的解決方法
Nginx gzip壓縮配置指南
php 301重定向的實現方法
servlet與jsp基礎教程(5)-讀取HTTP請求頭
讀懂電子郵件頭部信息

[關閉]
一分赛车计划app 配资利息一般是多少 新牛人配资 趣富配资 甘肃11选5 互利计划 av成人经典三级片 qq分分彩 股E融配资 投资理财查询 近期股票行情大盘走势 上证指数涨幅代表什么1990至2018上证走势图2019上证指数分析 乾鑫配资