搜尋
首頁php教程PHP开发函數header--頁面跳轉

函數header--頁面跳轉

Dec 20, 2016 am 10:26 AM

函數header作用:  
   頁面跳轉

http頭資訊
   頭資訊的功能很多,最主要的有以下幾個:
1、跳轉
   當瀏覽器接受到頭資訊中的Location: xxxx 後,就會自動跳到xxxx 指向的URL位址,這點有點類似用js 寫跳轉。但是這個跳轉只有瀏覽器知道,不管體內容裡有沒有東西,使用者都看不到。
   例:header("Location: http://www.example.com/");

2、指定網頁的內容
   同樣一個XML文件,如果頭資訊指定:Content-type: application/xml 的話,瀏覽器會將其依照XML檔案格式解析。但是,如果在頭資訊中是:Content-type: text/xml 的話,瀏覽器就會將其視為存文本解析。 (瀏覽器不是按照副檔名解析的)
   範例:header('Content-type: application/pdf');

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

HTTP協定狀態碼 
1××  1×66607請求要求進一步收到請求為進一步接收​​4項請求成功接收​​4×3046%請精修請求 
4××  客戶錯誤 
5××  伺服器錯誤 

語法:
   header(string,replace,http_response_code)
   header(string,replace,http_response_code)
   header(string,replace,http_response_code)
致規定要傳送的報頭字串。
   replace:可選。指示該報頭是否替換先前的報頭,或新增第二個報頭。預設是 true(替換)。 false(允許相同類型的多個報頭)。
   http_response_code:可選。把 HTTP 回應碼強制為指定的值。 (PHP 4 及更高版本可用)

例1:
   重定向網頁
         header("Location: http://www.example.com/");
強制使用者每次造訪這個頁面時都會取得最新資料,而不是使用存在客戶端的快取。  
          //告訴瀏覽器此頁面的過期時間(以格林威治時間表示),只要是已過的日期即可。
       header("Expires:Mon,26 Jul 1970 05:00:00 GMT");  

()取得最新資料 
       header("Last-Modified:".gmdate("D,d M Y H:i:s")."GMT");  

  Control:    no-cache,    must-revalidate");  

       //參數(並與先前的伺服器相容),即相容於HTTP1.0協定 🠎pache  

例3 :
   輸出狀態值到瀏覽器,主要用於存取權控制 
          header('HTTP/1.1 401 Unauthorized');  


例4:
   要限制一個使用者無法存取該頁,則可設定狀態為404,如下所示,這樣瀏覽器就顯示為即該頁不存在 
          header('HTTP/1.1   04    Not Found "); //這種寫法錯誤
   ?>

例5:
   隱藏檔案的位置
   html標籤 就可以實現普通文件下載。如果為了保密文件,就不能把文件連結告訴別人,可以用header函數實作文件下載。

   header("Content-type: audio/mpeg");
   header("Content-Disposition: attachment; 檔案;
   header函數前輸入內容

    一般來說在header函數前無法輸出html內容,類似的還有setcookie() 和session 函數,這些函數需要在輸出流中增加訊息頭部資訊。如果在header()執行之前有echo等語句,當後面遇到header()時,就會報出 “Warning: Cannot modify header information - headers already sent by ....”錯誤。就是說在這些函數的前面不能有任何文字、空行、回車等,而且最好在header()函數後面加上exit()函數。例如下面的錯誤寫法,在兩個php程式碼段之間有一個空白行:

//some code here
?>
//這裡應該是一個空行
    header("http/1.1 403 Forbidden");
    exit();
?>
原因:
   PHP腳本開始執行時,它可以同時發送http訊息頭部(標題)訊息和主體訊息.http訊息頭部(來自header() 或SetCookie() 函數)並不會立即發送,相反,它被保存到一個列表中. 這樣就可以允許你修改標題信息,包括缺省的標題(例如Content-Type 標題).但是,一旦腳本發送了任何非標題的輸出(例如,使用HTML 或print()調用),那麼PHP就必須先發送完所有的Header,然後終止HTTPheader.而後繼續發送主體數據.從這時開始,任何添加或修改Header信息的試圖都是不允許的,並會發送上述的錯誤訊息之一。

解決方法:
   修改php.ini開啟快取(output_buffering),或在程式中使用快取函數ob_start(),ob_end_flush() 等。原理是:output_buffering啟用時,在腳本發送輸出時,PHP並不發送HTTPheader。相反,它將此輸出透過管道(pipe)輸入到動態增加的快取中(只能在PHP4.0中使用,它具有中央化的輸出機制)。你仍然可以修改/新增header,或設定cookie,因為 header實際上並沒有發送。當全部腳本終止時,PHP將自動發送HTTP header到瀏覽器,然後再發送輸出緩衝中的內容。



更多函數header--頁面跳轉 相關文章請追蹤PHP中文網!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境