綠色資源網:您身邊最放心(xīn)的安全下載站! 最新軟件|熱門排行|軟件分類|軟件專題|廠商大全

綠色資(zī)源網

技術(shù)教(jiāo)程
您的位置:首頁網絡編程PHP編程 → header locations重定向(xiàng)語句對頁麵進行跳轉失敗的原因

header locations重定向語句對頁麵進行跳轉失敗的原因

我要評論 2011/03/10 19:34:51 來源:綠色(sè)資源網 編(biān)輯:綠色資源站 [ ] 評論(lùn):0 點擊:571次

函(hán)數header作用(yòng):  
   頁麵跳(tiào)轉

http頭信息
   頭信息(xī)的作用很多,最主要的有下麵(miàn)幾個:
1、跳轉
   當瀏覽器接受到(dào)頭信息中的 locations: xxxx 後,就會自動跳轉到 xxxx 指向的URL地址,這點有點類(lèi)似用 js 寫跳轉(zhuǎn)。但是這個跳轉隻有瀏覽器知道,不管體內容裏有沒有東西,用戶都看不到。
   例:header("locations: http://www.ynaad.com/");

2、指定網頁的內容
   同樣一個XML文件(jiàn),如果(guǒ)頭信息中指定:Content-type: application/xml 的話,瀏覽器會將其按照XML文件格式解析。但是,如果頭信息中是:Content-type: text/xml 的話,瀏覽器就會將其(qí)看作存文本解析。(瀏覽器不是按照擴展名(míng)解析文件的)
   例:header('Content-type: application/pdf');

3、附件
   不知道大家有沒(méi)有注意,有些時候在(zài)一些(xiē)網站(zhàn)下載東西,點下載連接以後,結果瀏覽器將(jiāng)這個附件當成網(wǎng)頁打開了,裏麵顯示的都是亂碼,這個問題也和頭信息有(yǒu)關。有時候瀏覽器(qì)根(gēn)據Content-type 來判斷是打開還是(shì)保存,這樣(yàng)有時就會判(pàn)斷錯誤(主要是(shì)網站設計者忘記寫Content-type)。其實,還有一個可以來指定(dìng)該內容為附件、需要保存,這個就是:Content-Disposition: attachment; filename="xxxxx"
   例:header('Content-Disposition: attachment; filename="downloaded.pdf"');
      //打開文件,並輸出(chū)
      readfile('original.pdf');

HTTP協議狀態碼
1××  保留  
2××  表(biǎo)示請(qǐng)求成功地接收  
3××  為完成請求客(kè)戶需進一步細化請(qǐng)求  
4××  客(kè)戶錯誤  
5××  服務器錯誤  

語法:
   header(string,replace,http_response_code)
參(cān)數
   string:必需。規定要發送的報頭字符(fú)串。
   replace:可選。指示該報頭(tóu)是否替換之前的報頭,或添加第二個報頭(tóu)。默認是 true(替換)。false(允許相同類型的多個報頭)。
   http_response_code:可(kě)選。把 HTTP 響應代碼強製為指定的值。(PHP 4 以及更高版本(běn)可用(yòng))

例(lì)1:
   重定向網頁

  1.    <?php
     
  2.       header("locations: http://www.ynaad.com/");
     
  3.       exit;
     
  4.    ?>

例2:
   強製用戶每次訪問這個頁麵時獲取(qǔ)最新資料,而不是使用存(cún)在客(kè)戶端的緩存。

  1.    <?php  
     
  2.        //告訴瀏覽器此頁麵(miàn)的過期時間(用格林威治時間表示),隻要是已經過(guò)去的日期即可。  
     
  3.        header("Expires:Mon,26 Jul 1970 05:00:00 GMT");  
     

  4.  
  5.        //告訴瀏覽器此頁麵的最後更新日期(用格林威治時間表示(shì))也就是當天,目(mù)的就是強迫瀏覽器獲取最新資料  
     
  6.        header("Last-Modified:".gmdate("D,d M Y H:i:s")."GMT");  
     

  7.  
  8.        //告訴客(kè)戶端瀏覽器不使用緩存  
     
  9.        header("Cache-Control:    no-cache,    must-revalsidate");  
     

  10.  
  11.        //參數(與以前的服務器兼容),即兼容HTTP1.0協議  
     
  12.        header("Pragma:    no-cache");
     
  13.   ?>  

例(lì)3:
   輸出狀態值到瀏覽器,主要用於訪問權限控製

  1.    <?php  
     
  2.        header('HTTP/1.1 401 Unauthorized');  
     
  3.        header('status: 401 Unauthorized');  
     
  4.    ?>  

例4:
   要限製一個用戶不能訪問該頁,則可設置(zhì)狀態為404,如下所示,這樣瀏覽器就顯(xiǎn)示為即該頁不存在

  1.    <?php  
     
  2.        header('HTTP/1.1    404    Not Found');  
     
  3.        header("status:    404    Not Found"); //這種寫法錯誤
     
  4.    ?>

例5:
   隱藏文件的位置
   html標簽 <A rel='nofollow' href='http://hostname/*.mp3'></a>就可以實現(xiàn)普通文件下(xià)載。如果為了保密文件,就不能把文件鏈接告訴別人,可以用header函數實現文件下載。

  header("Content-type: audio/mpeg");
   header("Content-Disposition: attachment; filename=filenale");
   header("Content-Description: PHP3 Generated Data");

例(lì)6:
   header函(hán)數(shù)前輸入內容

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

  1. <?php
     
  2. //some code here
     
  3. ?>
     
  4. //這裏應該是一個空行
     
  5. <?php
     
  6.     header("http/1.1 403 Forbidden");
     
  7.     exit();
     
  8. ?>

原因:
   PHP腳本開始執行 時,它可以同時發送(sòng)http消息(xī)頭部(標(biāo)題)信(xìn)息(xī)和主體信息(xī). http消息頭部(來自 header() 或SetCookie() 函數)並不會立即發送,相反,它被保(bǎo)存到一個列表(biǎo)中. 這樣就可以允許你修改標題信息,包括缺省的標題(例如Content-Type 標題).但是,一旦腳本發送了任何非標題的輸出(例如,使用 HTML 或 print()調用),那麽PHP就必須先發送完所有的(de)Header,然後終止 HTTPheader.而後繼續發送主體數據.從這時開始,任何添加或修(xiū)改Header信息的試圖都是不允許的,並會發送上述的錯誤消息(xī)之一。

解決辦法:
修改php.ini打(dǎ)開緩存(output_buffering),將output_buffering=0修改成output_buffering=4096
或者在程序中使用緩存函數ob_start(),ob_end_flush() 等。原理是:output_buffering被啟用時,在腳本發(fā)送輸出時,PHP並不發送HTTPheader。相反,它將此輸出通過管道(pipe)輸入到動(dòng)態增加的緩存中(隻能在PHP4.0中使用,它具有中央化的輸出機製)。你仍(réng)然可以修(xiū)改/添加header,或者設置cookie,因為(wéi) header實際(jì)上並沒有發送。當全部腳(jiǎo)本終止時,PHP將自動發送HTTP header到瀏覽器,然後再發送輸出緩衝中的內容(róng)。

關鍵詞:header,locations,重定向語句

閱讀本文後您有什麽感想? 已有 人給出評價!

  • 11 歡迎喜(xǐ)歡
  • 419 白癡
  • 428 拜托
  • 100 哇
  • 336 加油
  • 300 鄙視
免费人欧美成又黄又爽的视频丨一本色道久久88综合日韩精品丨国产专区日韩精品欧美色丨午夜无遮挡男女啪啪视频丨国产欧美日韩综合精品一区二区丨亚洲精品无码不卡在线播HE丨亚洲精品国产精品国自产观看丨日韩国产高清av不卡