PHP中的header()函式作用

suboysugar發表於2017-01-06

PHP 中 header()函式的作用是給客戶端傳送頭資訊。

什麼是頭資訊?
這裡只作簡單解釋,詳細的自己看http協議。
在 HTTP協議中,伺服器端的回答(response)內容包括兩部分:頭資訊(header) 和 體內容,這裡的頭資訊不是HTML中的<head></head>部分,同樣,體內容也不是<BODY>< /BODY>。頭資訊是使用者看不見的,裡面包含了很多項,包括:伺服器資訊、日期、內容的長度等。而體內容就是整個HTML,也就是你所能看見的全 部東西。

頭資訊有什麼用呢?
頭資訊的作用很多,最主要的有下面幾個:

1、跳轉:當瀏覽器接受到頭資訊中的 Location: xxxx 後,就會自動跳轉到 xxxx 指向的URL地址,這點有點類似用 js 寫跳轉。但是這個跳轉只有瀏覽器知道,不管體內容裡有沒有東西,使用者都看不到。

2、指定網頁的內容: 同樣一個XML檔案,如果頭資訊中指定:Content-type: application/xml 的話,瀏覽器會將其按照XML檔案格式解析。但是,如果頭資訊中是:Content-type: text/xml 的話,瀏覽器就會將其看作存文字解析。(瀏覽器不是按照副檔名解析檔案的)

3、附件: 不知道大家有沒有注意,有些時候在一些網站下載東西,點下載連線以後,結果瀏覽器將這個附件當成網頁開啟 了,裡面顯示的都是亂碼,這個問題也和頭資訊有關。有時候瀏覽器根據Content-type 來判斷是開啟還是儲存,這樣有時就會判斷錯誤(主要是網站設計者忘記寫Content-type)。其實,還有一個可以來指定該內容為附件、需要儲存,這 個就是:Content-Disposition: attachment; filename=”xxxxx”

3、附件:
// 指定內容為附件
header(`Content-Disposition: attachment; filename=”downloaded.pdf”`);
// 開啟檔案,並輸出
readfile(`original.pdf`);

最 後要提醒大家注意一點,所有頭資訊都必須在體內容之前,如果一旦有任何輸出了的話,header函式寫的 頭資訊就沒用了。比如,在檔案最開頭的<?php 處,如果前面有空格或者有空行,那header函式就沒用了(其實可以通過設定:output_buffer來解決,anyway),為什麼這樣,可以看 看HTTP協議,很簡單。

 

定義和用法

header() 函式向客戶端傳送原始的 HTTP 報頭。

認識到一點很重要,即必須在任何實際的輸出被髮送之前呼叫 header() 函式(在 PHP 4 以及更高的版本中,您可以使用輸出快取來解決此問題):

<html>

<?php

// 結果出錯

// 在呼叫 header() 之前已存在輸出

header(`Location: http://www.example.com/`);

?>

語法

header(string,replace,http_response_code)

引數 描述
string 必需。規定要傳送的報頭字串。
replace

 

可選。指示該報頭是否替換之前的報頭,或新增第二個報頭。

預設是 true(替換)。false(允許相同型別的多個報頭)。

http_response_code 可選。把 HTTP 響應程式碼強制為指定的值。(PHP 4 以及更高版本可用)

提示和註釋

註釋:從 PHP 4.4 之後,該函式防止一次傳送多個報頭。這是對頭部注入攻擊的保護措施。

例子

例子 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>

...

...
複製程式碼

 

註釋:使用者可能會設定一些選項來更改瀏覽器的預設快取設定。通過傳送上面的報頭,您可以覆蓋任何這些設定,強制瀏覽器不進行快取!

例子 2

提示使用者儲存一個生成的 PDF 檔案(Content-Disposition 報頭用於提供一個推薦的檔名,並強制瀏覽器顯示儲存對話方塊):

<?php

header(“Content-type:application/pdf”);

// 檔案將被稱為 downloaded.pdf

header(“Content-Disposition:attachment;filename=`downloaded.pdf`”);

// PDF 源在 original.pdf 中

readfile(“original.pdf”);

?>

<html>

<body>

 

<?php
header(`Content-type: application/image/pjpeg`);//輸出的型別
header(`Content-Disposition: attachment; filename=”downloaded.jpg”`); //下載顯示的名字,注意格式
readfile(`my.jpg`);
// 並將這個檔案以前面header傳送資訊設定的型別輸出,從而會彈出一個下載框
// 就是把伺服器上的my.jpg下載下來,下載顯示和儲存的名字預設是downloaded.jpg
?> 附帶文件型別及伺服器響應類別
一共兩個版本.
文件型別   和 伺服器響應HTTP的型別
上面的這個可以在上傳檔案的型別中對應上.下面的差了點.(原文下面的是用來寫在檔案頭上的.來確定該檔案是什麼型別.)

    `chm`=>`application/octet-stream`,
    `ppt`=>`application/vnd.ms-powerpoint`,
    `xls`=>`application/vnd.ms-excel`,
    `doc`=>`application/msword`,
    `exe`=>`application/octet-stream`,
    `rar`=>`application/octet-stream`,
    `js`=>”javascrīpt/js”,
    `css`=>”text/css”,
    `hqx`=>”application/mac-binhex40″,
    `bin`=>”application/octet-stream”,
    `oda`=>”application/oda”,
    `pdf`=>”application/pdf”,
    `ai`=>”application/postsrcipt”,
    `eps`=>”application/postsrcipt”,
    `es`=>”application/postsrcipt”,
    `rtf`=>”application/rtf”,
    `mif`=>”application/x-mif”,
    `csh`=>”application/x-csh”,
    `dvi`=>”application/x-dvi”,
    `hdf`=>”application/x-hdf”,
    `nc`=>”application/x-netcdf”,
    `cdf`=>”application/x-netcdf”,
    `latex`=>”application/x-latex”,
    `ts`=>”application/x-troll-ts”,
    `src`=>”application/x-wais-source”,
    `zip`=>”application/zip”,
    `bcpio`=>”application/x-bcpio”,
    `cpio`=>”application/x-cpio”,
    `gtar`=>”application/x-gtar”,
    `shar`=>”application/x-shar”,
    `sv4cpio`=>”application/x-sv4cpio”,
    `sv4crc`=>”application/x-sv4crc”,
    `tar`=>”application/x-tar”,
    `ustar`=>”application/x-ustar”,
    `man`=>”application/x-troff-man”,
    `sh`=>”application/x-sh”,
    `tcl`=>”application/x-tcl”,
    `tex`=>”application/x-tex”,
    `texi`=>”application/x-texinfo”,
    `texinfo`=>”application/x-texinfo”,
    `t`=>”application/x-troff”,
    `tr`=>”application/x-troff”,
    `roff`=>”application/x-troff”,
    `shar`=>”application/x-shar”,
    `me`=>”application/x-troll-me”,
    `ts`=>”application/x-troll-ts”,
    `gif`=>”image/gif”,
    `jpeg`=>”image/pjpeg”,
    `jpg`=>”image/pjpeg”,
    `jpe`=>”image/pjpeg”,
    `ras`=>”image/x-cmu-raster”,
    `pbm`=>”image/x-portable-bitmap”,
    `ppm`=>”image/x-portable-pixmap”,
    `xbm`=>”image/x-xbitmap”,
    `xwd`=>”image/x-xwindowdump”,
    `ief`=>”image/ief”,
    `tif`=>”image/tiff”,
    `tiff`=>”image/tiff”,
    `pnm`=>”image/x-portable-anymap”,
    `pgm`=>”image/x-portable-graymap”,
    `rgb`=>”image/x-rgb”,
    `xpm`=>”image/x-xpixmap”,
    `txt`=>”text/plain”,
    `c`=>”text/plain”,
    `cc`=>”text/plain”,
    `h`=>”text/plain”,
    `html`=>”text/html”,
    `htm`=>”text/html”,
    `htl`=>”text/html”,
    `rtx`=>”text/richtext”,
    `etx`=>”text/x-setext”,
    `tsv`=>”text/tab-separated-values”,
    `mpeg`=>”video/mpeg”,
    `mpg`=>”video/mpeg”,
    `mpe`=>”video/mpeg”,
    `avi`=>”video/x-msvideo”,
    `qt`=>”video/quicktime”,
    `mov`=>”video/quicktime”,
    `moov`=>”video/quicktime”,
    `movie`=>”video/x-sgi-movie”,
    `au`=>”audio/basic”,
    `snd`=>”audio/basic”,
    `wav`=>”audio/x-wav”,
    `aif`=>”audio/x-aiff”,
    `aiff`=>”audio/x-aiff”,
    `aifc`=>”audio/x-aiff”,
    `swf`=>”application/x-shockwave-flash”
    `myz`=>”application/myz”

“.*”=”application/octet-stream”
“.001″=”application/x-001”
“.301″=”application/x-301”
“.323″=”text/h323”
“.906″=”application/x-906”
“.907″=”drawing/907”
“.a11″=”application/x-a11”
“.acp”=”audio/x-mei-aac”
“.ai”=”application/postscript”
“.aif”=”audio/aiff”
“.aifc”=”audio/aiff”
“.aiff”=”audio/aiff”
“.anv”=”application/x-anv”
“.asa”=”text/asa”
“.asf”=”video/x-ms-asf”
“.asp”=”text/asp”
“.asx”=”video/x-ms-asf”
“.au”=”audio/basic”
“.avi”=”video/avi”
“.awf”=”application/vnd.adobe.workflow”
“.biz”=”text/xml”
“.bmp”=”application/x-bmp”
“.bot”=”application/x-bot”
“.c4t”=”application/x-c4t”
“.c90″=”application/x-c90”
“.cal”=”application/x-cals”
“.cat”=”application/vnd.ms-pki.seccat”
“.cdf”=”application/x-netcdf”
“.cdr”=”application/x-cdr”
“.cel”=”application/x-cel”
“.cer”=”application/x-x509-ca-cert”
“.cg4″=”application/x-g4”
“.cgm”=”application/x-cgm”
“.cit”=”application/x-cit”
“.class”=”java/*”
“.cml”=”text/xml”
“.cmp”=”application/x-cmp”
“.cmx”=”application/x-cmx”
“.cot”=”application/x-cot”
“.crl”=”application/pkix-crl”
“.crt”=”application/x-x509-ca-cert”
“.csi”=”application/x-csi”
“.css”=”text/css”
“.cut”=”application/x-cut”
“.dbf”=”application/x-dbf”
“.dbm”=”application/x-dbm”
“.dbx”=”application/x-dbx”
“.dcd”=”text/xml”
“.dcx”=”application/x-dcx”
“.der”=”application/x-x509-ca-cert”
“.dgn”=”application/x-dgn”
“.dib”=”application/x-dib”
“.dll”=”application/x-msdownload”
“.doc”=”application/msword”
“.dot”=”application/msword”
“.drw”=”application/x-drw”
“.dtd”=”text/xml”
“.dwf”=”Model/vnd.dwf”
“.dwf”=”application/x-dwf”
“.dwg”=”application/x-dwg”
“.dxb”=”application/x-dxb”
“.dxf”=”application/x-dxf”
“.edn”=”application/vnd.adobe.edn”
“.emf”=”application/x-emf”
“.eml”=”message/rfc822”
“.ent”=”text/xml”
“.epi”=”application/x-epi”
“.eps”=”application/x-ps”
“.eps”=”application/postscript”
“.etd”=”application/x-ebx”
“.exe”=”application/x-msdownload”
“.fax”=”image/fax”
“.fdf”=”application/vnd.fdf”
“.fif”=”application/fractals”
“.fo”=”text/xml”
“.frm”=”application/x-frm”
“.g4″=”application/x-g4”
“.gbr”=”application/x-gbr”
“.gcd”=”application/x-gcd”
“.gif”=”image/gif”
“.gl2″=”application/x-gl2”
“.gp4″=”application/x-gp4”
“.hgl”=”application/x-hgl”
“.hmr”=”application/x-hmr”
“.hpg”=”application/x-hpgl”
“.hpl”=”application/x-hpl”
“.hqx”=”application/mac-binhex40”
“.hrf”=”application/x-hrf”
“.hta”=”application/hta”
“.htc”=”text/x-component”
“.htm”=”text/html”
“.html”=”text/html”
“.htt”=”text/webviewhtml”
“.htx”=”text/html”
“.icb”=”application/x-icb”
“.ico”=”image/x-icon”
“.ico”=”application/x-ico”
“.iff”=”application/x-iff”
“.ig4″=”application/x-g4”
“.igs”=”application/x-igs”
“.iii”=”application/x-iphone”
“.img”=”application/x-img”
“.ins”=”application/x-internet-signup”
“.isp”=”application/x-internet-signup”
“.IVF”=”video/x-ivf”
“.java”=”java/*”
“.jfif”=”image/jpeg”
“.jpe”=”image/jpeg”
“.jpe”=”application/x-jpe”
“.jpeg”=”image/jpeg”
“.jpg”=”image/jpeg”
“.jpg”=”application/x-jpg”
“.js”=”application/x-javascript”
“.jsp”=”text/html”
“.la1″=”audio/x-liquid-file”
“.lar”=”application/x-laplayer-reg”
“.latex”=”application/x-latex”
“.lavs”=”audio/x-liquid-secure”
“.lbm”=”application/x-lbm”
“.lmsff”=”audio/x-la-lms”
“.ls”=”application/x-javascript”
“.ltr”=”application/x-ltr”
“.m1v”=”video/x-mpeg”
“.m2v”=”video/x-mpeg”
“.m3u”=”audio/mpegurl”
“.m4e”=”video/mpeg4”
“.mac”=”application/x-mac”
“.man”=”application/x-troff-man”
“.math”=”text/xml”
“.mdb”=”application/msaccess”
“.mdb”=”application/x-mdb”
“.mfp”=”application/x-shockwave-flash”
“.mht”=”message/rfc822”
“.mhtml”=”message/rfc822”
“.mi”=”application/x-mi”
“.mid”=”audio/mid”
“.midi”=”audio/mid”
“.mil”=”application/x-mil”
“.mml”=”text/xml”
“.mnd”=”audio/x-musicnet-download”
“.mns”=”audio/x-musicnet-stream”
“.mocha”=”application/x-javascript”
“.movie”=”video/x-sgi-movie”
“.mp1″=”audio/mp1”
“.mp2″=”audio/mp2”
“.mp2v”=”video/mpeg”
“.mp3″=”audio/mp3”
“.mp4″=”video/mpeg4”
“.mpa”=”video/x-mpg”
“.mpd”=”application/vnd.ms-project”
“.mpe”=”video/x-mpeg”
“.mpeg”=”video/mpg”
“.mpg”=”video/mpg”
“.mpga”=”audio/rn-mpeg”
“.mpp”=”application/vnd.ms-project”
“.mps”=”video/x-mpeg”
“.mpt”=”application/vnd.ms-project”
“.mpv”=”video/mpg”
“.mpv2″=”video/mpeg”
“.mpw”=”application/vnd.ms-project”
“.mpx”=”application/vnd.ms-project”
“.mtx”=”text/xml”
“.mxp”=”application/x-mmxp”
“.net”=”image/pnetvue”
“.nrf”=”application/x-nrf”
“.nws”=”message/rfc822”
“.odc”=”text/x-ms-odc”
“.out”=”application/x-out”
“.p10″=”application/pkcs10”
“.p12″=”application/x-pkcs12”
“.p7b”=”application/x-pkcs7-certificates”
“.p7c”=”application/pkcs7-mime”
“.p7m”=”application/pkcs7-mime”
“.p7r”=”application/x-pkcs7-certreqresp”
“.p7s”=”application/pkcs7-signature”
“.pc5″=”application/x-pc5”
“.pci”=”application/x-pci”
“.pcl”=”application/x-pcl”
“.pcx”=”application/x-pcx”
“.pdf”=”application/pdf”
“.pdf”=”application/pdf”
“.pdx”=”application/vnd.adobe.pdx”
“.pfx”=”application/x-pkcs12”
“.pgl”=”application/x-pgl”
“.pic”=”application/x-pic”
“.pko”=”application/vnd.ms-pki.pko”
“.pl”=”application/x-perl”
“.plg”=”text/html”
“.pls”=”audio/scpls”
“.plt”=”application/x-plt”
“.png”=”image/png”
“.png”=”application/x-png”
“.pot”=”application/vnd.ms-powerpoint”
“.ppa”=”application/vnd.ms-powerpoint”
“.ppm”=”application/x-ppm”
“.pps”=”application/vnd.ms-powerpoint”
“.ppt”=”application/vnd.ms-powerpoint”
“.ppt”=”application/x-ppt”
“.pr”=”application/x-pr”
“.prf”=”application/pics-rules”
“.prn”=”application/x-prn”
“.prt”=”application/x-prt”
“.ps”=”application/x-ps”
“.ps”=”application/postscript”
“.ptn”=”application/x-ptn”
“.pwz”=”application/vnd.ms-powerpoint”
“.r3t”=”text/vnd.rn-realtext3d”
“.ra”=”audio/vnd.rn-realaudio”
“.ram”=”audio/x-pn-realaudio”
“.ras”=”application/x-ras”
“.rat”=”application/rat-file”
“.rdf”=”text/xml”
“.rec”=”application/vnd.rn-recording”
“.red”=”application/x-red”
“.rgb”=”application/x-rgb”
“.rjs”=”application/vnd.rn-realsystem-rjs”
“.rjt”=”application/vnd.rn-realsystem-rjt”
“.rlc”=”application/x-rlc”
“.rle”=”application/x-rle”
“.rm”=”application/vnd.rn-realmedia”
“.rmf”=”application/vnd.adobe.rmf”
“.rmi”=”audio/mid”
“.rmj”=”application/vnd.rn-realsystem-rmj”
“.rmm”=”audio/x-pn-realaudio”
“.rmp”=”application/vnd.rn-rn_music_package”
“.rms”=”application/vnd.rn-realmedia-secure”
“.rmvb”=”application/vnd.rn-realmedia-vbr”
“.rmx”=”application/vnd.rn-realsystem-rmx”
“.rnx”=”application/vnd.rn-realplayer”
“.rp”=”image/vnd.rn-realpix”
“.rpm”=”audio/x-pn-realaudio-plugin”
“.rsml”=”application/vnd.rn-rsml”
“.rt”=”text/vnd.rn-realtext”
“.rtf”=”application/msword”
“.rtf”=”application/x-rtf”
“.rv”=”video/vnd.rn-realvideo”
“.sam”=”application/x-sam”
“.sat”=”application/x-sat”
“.sdp”=”application/sdp”
“.sdw”=”application/x-sdw”
“.sit”=”application/x-stuffit”
“.slb”=”application/x-slb”
“.sld”=”application/x-sld”
“.slk”=”drawing/x-slk”
“.smi”=”application/smil”
“.smil”=”application/smil”
“.smk”=”application/x-smk”
“.snd”=”audio/basic”
“.sol”=”text/plain”
“.sor”=”text/plain”
“.spc”=”application/x-pkcs7-certificates”
“.spl”=”application/futuresplash”
“.spp”=”text/xml”
“.ssm”=”application/streamingmedia”
“.sst”=”application/vnd.ms-pki.certstore”
“.stl”=”application/vnd.ms-pki.stl”
“.stm”=”text/html”
“.sty”=”application/x-sty”
“.svg”=”text/xml”
“.swf”=”application/x-shockwave-flash”
“.tdf”=”application/x-tdf”
“.tg4″=”application/x-tg4”
“.tga”=”application/x-tga”
“.tif”=”image/tiff”
“.tif”=”application/x-tif”
“.tiff”=”image/tiff”
“.tld”=”text/xml”
“.top”=”drawing/x-top”
“.torrent”=”application/x-bittorrent”
“.tsd”=”text/xml”
“.txt”=”text/plain”
“.uin”=”application/x-icq”
“.uls”=”text/iuls”
“.vcf”=”text/x-vcard”
“.vda”=”application/x-vda”
“.vdx”=”application/vnd.visio”
“.vml”=”text/xml”
“.vpg”=”application/x-vpeg005”
“.vsd”=”application/vnd.visio”
“.vsd”=”application/x-vsd”
“.vss”=”application/vnd.visio”
“.vst”=”application/vnd.visio”
“.vst”=”application/x-vst”
“.vsw”=”application/vnd.visio”
“.vsx”=”application/vnd.visio”
“.vtx”=”application/vnd.visio”
“.vxml”=”text/xml”
“.wav”=”audio/wav”
“.wax”=”audio/x-ms-wax”
“.wb1″=”application/x-wb1”
“.wb2″=”application/x-wb2”
“.wb3″=”application/x-wb3”
“.wbmp”=”image/vnd.wap.wbmp”
“.wiz”=”application/msword”
“.wk3″=”application/x-wk3”
“.wk4″=”application/x-wk4”
“.wkq”=”application/x-wkq”
“.wks”=”application/x-wks”
“.wm”=”video/x-ms-wm”
“.wma”=”audio/x-ms-wma”
“.wmd”=”application/x-ms-wmd”
“.wmf”=”application/x-wmf”
“.wml”=”text/vnd.wap.wml”
“.wmv”=”video/x-ms-wmv”
“.wmx”=”video/x-ms-wmx”
“.wmz”=”application/x-ms-wmz”
“.wp6″=”application/x-wp6”
“.wpd”=”application/x-wpd”
“.wpg”=”application/x-wpg”
“.wpl”=”application/vnd.ms-wpl”
“.wq1″=”application/x-wq1”
“.wr1″=”application/x-wr1”
“.wri”=”application/x-wri”
“.wrk”=”application/x-wrk”
“.ws”=”application/x-ws”
“.ws2″=”application/x-ws”
“.wsc”=”text/scriptlet”
“.wsdl”=”text/xml”
“.wvx”=”video/x-ms-wvx”
“.xdp”=”application/vnd.adobe.xdp”
“.xdr”=”text/xml”
“.xfd”=”application/vnd.adobe.xfd”
“.xfdf”=”application/vnd.adobe.xfdf”
“.xhtml”=”text/html”
“.xls”=”application/vnd.ms-excel”
“.xls”=”application/x-xls”
“.xlw”=”application/x-xlw”
“.xml”=”text/xml”
“.xpl”=”audio/scpls”
“.xq”=”text/xml”
“.xql”=”text/xml”
“.xquery”=”text/xml”
“.xsd”=”text/xml”
“.xsl”=”text/xml”
“.xslt”=”text/xml”
“.xwd”=”application/x-xwd”
“.x_b”=”application/x-x_b”
“.x_t”=”application/x-x_t”
“.myz”=”application/myz”

原文地址:http://www.qinychun.com/2012/07/php-header/106.html

如何聯絡我:【萬里虎】www.bravetiger.cn
【QQ】3396726884 (諮詢問題100元起,幫助解決問題500元起)
【部落格】http://www.cnblogs.com/kenshinobiy/


相關文章