妖精视频黄版_7723高清完整版在线观看免费_欧美日本双飞麻豆视频_日本不卡a不v免费高清_亚洲午夜激情网站_琪琪无码热热色原_亚洲av直无码国产精品色软件_无码在线不卡观看_最新国产成人精品2024_大胸美女又黄w网站

您好!歡迎登錄 大連奈特網(wǎng)絡(luò)科技有限公司官網(wǎng)!

新聞資訊
多域名跳轉(zhuǎn)代碼,PHP跳轉(zhuǎn)代碼(2)
2012-02-07 來(lái)源:奈特原動(dòng)力 作者:奈特原動(dòng)力 查看次數(shù):2690次

函數(shù)header作用: 
  
頁(yè)面跳轉(zhuǎn)

http頭信息
   頭信息的作用很多,最主要的有下面幾個(gè):
1、跳轉(zhuǎn)
   當(dāng)瀏覽器接受到頭信息中的 Location: xxxx 后,就會(huì)自動(dòng)跳轉(zhuǎn)到 xxxx 指向的URL地址,這點(diǎn)有點(diǎn)類(lèi)似用 js 寫(xiě)跳轉(zhuǎn)。但是這個(gè)跳轉(zhuǎn)只有瀏覽器知道,不管體內(nèi)容里有沒(méi)有東西,用戶(hù)都看不到。
   例:header("Location: http://www.aaa.com/");

2、指定網(wǎng)頁(yè)的內(nèi)容
   同樣一個(gè)XML文件,如果頭信息中指定:Content-type: application/xml 的話,瀏覽器會(huì)將其按照XML文件格式解析。但是,如果頭信息中是:Content-type: text/xml 的話,瀏覽器就會(huì)將其看作存文本解析。(瀏覽器不是按照擴(kuò)展名解析文件的)
   例:header(‘Content-type: application/pdf‘);

3、附件
   不知道大家有沒(méi)有注意,有些時(shí)候在一些網(wǎng)站下載東西,點(diǎn)下載連接以后,結(jié)果瀏覽器將這個(gè)附件當(dāng)成網(wǎng)頁(yè)打開(kāi)了,里面顯示的都是亂碼,這個(gè)問(wèn)題也和頭信息有關(guān)。有時(shí)候?yàn)g覽器根據(jù)Content-type 來(lái)判斷是打開(kāi)還是保存,這樣有時(shí)就會(huì)判斷錯(cuò)誤(主要是網(wǎng)站設(shè)計(jì)者忘記寫(xiě)Content-type)。其實(shí),還有一個(gè)可以來(lái)指定該內(nèi)容為附件、需要保存,這個(gè)就是:Content-Disposition: attachment; filename="xxxxx"
   例:header(‘Content-Disposition: attachment; filename="downloaded.pdf"‘);
      //打開(kāi)文件,并輸出
      readfile(‘original.pdf‘);

HTTP協(xié)議狀態(tài)碼
1××  保留 
2××  表示請(qǐng)求成功地接收 
3××  為完成請(qǐng)求客戶(hù)需進(jìn)一步細(xì)化請(qǐng)求 
4××  客戶(hù)錯(cuò)誤 
5××  服務(wù)器錯(cuò)誤 

語(yǔ)法:
   header(string,replace,http_response_code)
參數(shù)
   string:必需。規(guī)定要發(fā)送的報(bào)頭字符串。
   replace:可選。指示該報(bào)頭是否替換之前的報(bào)頭,或添加第二個(gè)報(bào)頭。默認(rèn)是 true(替換)。false(允許相同類(lèi)型的多個(gè)報(bào)頭)。
   http_response_code:可選。把 HTTP 響應(yīng)代碼強(qiáng)制為指定的值。(PHP 4 以及更高版本可用)

例1:
   重定向網(wǎng)頁(yè)

   <?php

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

      exit;

   ?>
例2:
   強(qiáng)制用戶(hù)每次訪問(wèn)這個(gè)頁(yè)面時(shí)獲取最新資料,而不是使用存在客戶(hù)端的緩存。

   <?php 

       //告訴瀏覽器此頁(yè)面的過(guò)期時(shí)間(用格林威治時(shí)間表示),只要是已經(jīng)過(guò)去的日期即可。 

       header("Expires:Mon,26 Jul 1970 05:00:00 GMT"); 

 

       //告訴瀏覽器此頁(yè)面的最后更新日期(用格林威治時(shí)間表示)也就是當(dāng)天,目的就是強(qiáng)迫瀏覽器獲取最新資料 

       header("Last-Modified:".gmdate("D,d M Y H:i:s")."GMT"); 

 

       //告訴客戶(hù)端瀏覽器不使用緩存 

       header("Cache-Control:    no-cache,    must-revalidate"); 

 

       //參數(shù)(與以前的服務(wù)器兼容),即兼容HTTP1.0協(xié)議 

       header("Pragma:    no-cache");

  ?>  
例3:
   輸出狀態(tài)值到瀏覽器,主要用于訪問(wèn)權(quán)限控制

   <?php 

       header(‘HTTP/1.1 401 Unauthorized‘); 

       header(‘status: 401 Unauthorized‘); 

   ?>  
例4:
   要限制一個(gè)用戶(hù)不能訪問(wèn)該頁(yè),則可設(shè)置狀態(tài)為404,如下所示,這樣瀏覽器就顯示為即該頁(yè)不存在

   <?php 

       header(‘HTTP/1.1    404    Not Found‘); 

       header("status:    404    Not Found"); //這種寫(xiě)法錯(cuò)誤

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

  header("Content-type: audio/mpeg");
   header("Content-Disposition: attachment; filename=filenale");
   header("Content-Description: PHP3 Generated Data");
例6:
   header函數(shù)前輸入內(nèi)容

    一般來(lái)說(shuō)在header函數(shù)前不能輸出html內(nèi)容,類(lèi)似的還有setcookie() 和 session 函數(shù),這些函數(shù)需要在輸出流中增加消息頭部信息。如果在header()執(zhí)行之前有echo等語(yǔ)句,當(dāng)后面遇到header()時(shí),就會(huì)報(bào)出 “Warning: Cannot modify header information - headers already sent by ....”錯(cuò)誤。就是說(shuō)在這些函數(shù)的前面不能有任何文字、空行、回車(chē)等,而且最好在header()函數(shù)后加上exit()函數(shù)。例如下面的錯(cuò)誤寫(xiě)法,在兩個(gè)php代碼段之間有一個(gè)空行:

<?php

//some code here

?>

//這里應(yīng)該是一個(gè)空行

<?php

    header("http/1.1 403 Forbidden");

    exit();

?>
原因:
   PHP腳本開(kāi)始執(zhí)行 時(shí),它可以同時(shí)發(fā)送http消息頭部(標(biāo)題)信息和主體信息. http消息頭部(來(lái)自 header() 或SetCookie() 函數(shù))并不會(huì)立即發(fā)送,相反,它被保存到一個(gè)列表中. 這樣就可以允許你修改標(biāo)題信息,包括缺省的標(biāo)題(例如Content-Type 標(biāo)題).但是,一旦腳本發(fā)送了任何非標(biāo)題的輸出(例如,使用 HTML 或 print()調(diào)用),那么PHP就必須先發(fā)送完所有的Header,然后終止 HTTPheader.而后繼續(xù)發(fā)送主體數(shù)據(jù).從這時(shí)開(kāi)始,任何添加或修改Header信息的試圖都是不允許的,并會(huì)發(fā)送上述的錯(cuò)誤消息之一。

解決辦法:
修改php.ini打開(kāi)緩存(output_buffering),將output_buffering=0修改成output_buffering=4096
或者在程序中使用緩存函數(shù)ob_start(),ob_end_flush() 等。原理是:output_buffering被啟用時(shí),在腳本發(fā)送輸出時(shí),PHP并不發(fā)送HTTPheader。相反,它將此輸出通過(guò)管道(pipe)輸入到動(dòng)態(tài)增加的緩存中(只能在PHP4.0中使用,它具有中央化的輸出機(jī)制)。你仍然可以修改/添加header,或者設(shè)置cookie,因?yàn)?header實(shí)際上并沒(méi)有發(fā)送。當(dāng)全部腳本終止時(shí),PHP將自動(dòng)發(fā)送HTTP header到瀏覽器,然后再發(fā)送輸出緩沖中的內(nèi)容。(完)

大連網(wǎng)站建設(shè)