Presentation is loading. Please wait.

Presentation is loading. Please wait.

Header 函數 header()函數 Examples:

Similar presentations


Presentation on theme: "Header 函數 header()函數 Examples:"— Presentation transcript:

1 Header 函數 header()函數 Examples:

2 HTTP Message

3 header 函數簡介 header() 函數會傳送一個標題訊息給瀏覽器。 因為這些訊息都遵循 HTTP 的規範, 因此瀏 覽器會依據這些訊息做適當之回應。 常見header名稱: Location Refresh Content-type Expires Last-Modified

4 Header 函數簡介 header()格式 標頭宣告文字: 傳給瀏覽器的標題。
int header (string 標頭宣告文字 [, bool 置換 [, int http回應碼]]) 標頭宣告文字: 傳給瀏覽器的標題。 置換 : True: 當有兩個相同的標題, 後面的訊 息將會覆蓋前一個訊息。 HTTP 回應碼: 指定HTTP 回應碼的值。

5 Location Location - 瀏覽器顯示指定的網頁。 格式: header("Location: http://絕對網路位址");
應用: 客製化網頁 1: <?php 2: header("Location: 3: exit; 4: ?>

6 <?php if (empty($_GET['choose'])): ?> <html> <title>多向轉址</title> <body> 您喜歡瀏覽的運動相關訊息是:<br> <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="get"> <input type="radio" name="choose" value="1">游泳<br/> <input type="radio" name="choose" value="2">健行<br/> <input type="radio" name="choose" value="3">登山<br/> <input type="submit" value=" 選好了 "> </form> </body> </html> else: $hostname=$_SERVER['HTTP_HOST']; $abs_path=dirname($_SERVER['PHP_SELF']); $filename=$_GET['choose'].".htm"; header("Location: exit; endif

7

8 Refresh Refresh - 更新網頁。 header("Refresh: N; URL=網址");
應用: 廣告看板、新聞內容更新等等

9 Refresh 範例 –廣告看版 <?php header("Refresh: 5"); ?> <html> …
$msg[0] = "學如逆水行舟, 不盡則退"; $msg[1] = "今日事, 今日畢"; $msg[2] = "登高必自卑, 行遠必自邇"; $msg[3] = "天下無難事, 只怕有心人"; $msg[4] = "失敗為成功之母"; $msg[5] = "微笑, 是最好的國際語言"; $i = rand()% 6; echo "今日小語 : $msg[$i]";

10 Content-type Content-type - 定義網頁內容的類型,避免亂碼 的產生。 Content-Type = "Content-Type:" media-type 例如: header("Content-type: text/html; charset=big5"); 設定網頁內容為big5 header("Content-type: image/gif"); 設定網頁內容為gif格式的圖片 header("Content-type: application/pdf"); 設定網頁內容為pdf檔

11 <img src="getImg.php" alt="random flower" />
$arrImg = array("sf003.jpg", "sf027.jpg", "sf029.jpg", "sf032.jpg", "sf033.jpg", "sf038.jpg", "sunFlower.jpg"); $rn = rand(0, count($arrImg)-1); $img = $arrImg[$rn]; header("Content-type: image/jpeg"); // header("Content-Disposition: attachment; filename=$img"); header("Content-Length: ".filesize($img)); $ff=fopen($img, "rb"); $bdata = fread($ff, filesize($img)); echo $bdata; fclose($ff); ?>

12 使用 header() 函數認證 基本的認證就是使用帳號密碼 網頁兩種輸入帳密方式: 表單輸入 HTTP 認證 IE Firefox

13 HTTP 認證 安全php 時需採用module 模式才可執行,若採用CGI 模式就無法使用
認證內容會存於PHP預設變數PHP_AUTH_USER 及 PHP_AUTH_PW。程式中只要讀取此兩個變數即可 獲得使用者輸入的帳號及密碼。

14 HTTP 認證 loginAuth.php <?php if (empty($_SERVER['PHP_AUTH_USER'])) {
header("Content-type: text/html; charset=utf-8"); header('WWW-Authenticate: Basic realm="Web header('HTTP/ Unauthorized'); echo '請輸入正確的帳號及密碼, 不可以取消!'; exit; } ?> <html xmlns=" ... echo "您登入的帳號是 ".$_SERVER['PHP_AUTH_USER']."<br>"; //echo "您使用的密碼是 ".$_SERVER['PHP_AUTH_PW']."<p>"; if (($_SERVER['PHP_AUTH_USER'] != 'admin') || ($_SERVER['PHP_AUTH_PW'] !='pwd999')) echo "登入失敗, 請開啟新的瀏覽器重新登入"; else echo "登入成功.....";

15 Cache Control 為了節省網路的資源,經常架設許多代理伺服器(proxy server)。有了代理伺服器,使用者會先連上proxy server, 若是找不到所需資料才會再連結到遠端網站伺服器讀取 資料。 若某個網站更新快速,就可能發生網站內容已更新,但 使用者利用proxy server 上的舊資料的情形。因此必須宣 告網頁的有效期限,使用者才可以讀到最新的網頁內容

16 Cache Control Cache Control 大致可以分成幾種類型
Expires: 設定過期時間, 當時間超過指定時間就表示網 頁內容已經失效。 Last-Modified: 設定最後修改日,暗示cache 中的資料 是否有效 no-cache :使得伺服器的資料可以傳送到遠端的使用 者, 而不會被暫存 (cache) 起來。 no-store :是預防不良的版本或者是敏感的資訊被保留 下來。 must-revalidate: 是指必須要再評估資訊, 如果暫存 (cached) 的資料是無效的則讓伺服器與使用者端連線 Date 是說明資料內容的建立日期及時間。

17 Cache Control Date : 資料內容的建立日期及時間。 Date = "Date:" HTTP-date 範例:
header("Date: Sun, 15 Feb :00:00 GMT"); 建立日期是2004年2月15日8時。

18 Cache Control Cache Control 簡單範例
header("Expires: Fri, 31 Oct :00:00 GMT"); 表示2003年10月31日星期五 18時。 header("Last-Modified: Wed, 01 Jan :00:00 GMT"); 上次修改時間2003年1月1日12時 header("Date: Sun, 15 Feb :00:00 GMT"); 建立日期是2004年2月15日8時。


Download ppt "Header 函數 header()函數 Examples:"

Similar presentations


Ads by Google