php 5 引入檔 及 檔案處理

32
PHP 5 PHP 5 引引引 引 引引引引 引引引 引 引引引引 引引引 引引引引 引引引引

Upload: oma

Post on 15-Jan-2016

84 views

Category:

Documents


1 download

DESCRIPTION

PHP 5 引入檔 及 檔案處理. 引入檔 檔案處理 檔案上傳. 引入檔. require () include() require 、 include 的差異 require_once() 和 include_once(). require(). require() 的功能是將引入檔的內容取代 require() 所在的位置。 require() 本身並不提供回傳值 (return) 的功能 require() 格式如下: require (引 入檔檔名) require '引入檔檔名' requir e $某個存入檔 名的變數. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: PHP 5   引入檔 及 檔案處理

PHP 5 PHP 5 引入檔 及 檔案處理引入檔 及 檔案處理•引入檔

•檔案處理

•檔案上傳

Page 2: PHP 5   引入檔 及 檔案處理

引入檔引入檔require ()include()require 、 include 的差異require_once() 和 include_once()

Page 3: PHP 5   引入檔 及 檔案處理

require()require()require() 的功能是將引入檔的內容取代

require() 所在的位置。require() 本身並不提供回傳值 (return) 的功能

require() 格式如下:◦require ( 引入檔檔名 )◦require ' 引入檔檔名 '◦require $ 某個存入檔名的變數

Page 4: PHP 5   引入檔 及 檔案處理

require() require() 範例範例引入檔 var.inc 內容如下<?php

$Width=100 ;$Height=5 ;define (CrLf ,"<br/>" );

?>

1: <?php require("var.inc") ?>2: <html>3: <title>Require()</title>4: <body>5: <?php6: echo " 高度 = $Height" ;7: echo CrLf ;8: echo " 寬度 = $Width". CrLf ;9: echo " 面積 = " ;10: echo $Width*$Height ;11: echo CrLf ;12: echo " 周長 = " ;13: echo 2*($Width+$Height) ;14: ?>15: </body>16: </html>

Page 5: PHP 5   引入檔 及 檔案處理

include()include()include() 也是將一個外部檔案內容引入到程式中使用的指令 , 和 require() 最大的差別在於◦include() 是在呼叫時才將引入檔的內容引入。因此在迴圈的呼叫時 , 建議使用 include() 。

◦include() 是容許有回傳值。

請特別注意 , 若引入檔存在,無論執行與否 require() 的內容一定會被讀進來。若不存在,則 require() 顯示警告訊息後,就不執行了

Page 6: PHP 5   引入檔 及 檔案處理

include() include() 範例範例add_include.inc 內容如下<?

echo " 進入 include file <br>" ;

return $a+$b ;?>

1: <html>2: <title>Include</title>3: <body>4: <?php5: $a=10 ;6: $b=20 ;7: $c=include ("add_include.inc") ;8: echo " 回到主程式 : <br>" ;9: echo "A,B 二數和是 $c" ;10: ?>11: </body>12: </html>

Page 7: PHP 5   引入檔 及 檔案處理

requirerequire 、、 includeinclude 的差異的差異回傳值不同

◦include() 可以有回傳值引入時間不同◦ include() 是在呼叫時才將引入檔的內容引入。因此在迴圈的呼叫時 , 建議使用 include() 。

◦ require () 在一開始的時候就會將引入檔載入。錯誤處理不同。

◦require() 遇到錯誤時,停止執行程式 , ◦include() 會產生警告後忽略錯誤繼續執行。

Page 8: PHP 5   引入檔 及 檔案處理

require_once() require_once() 和和include_once()include_once()

require_once() 和 include_once() 可以防止發生重複定義函數或常數等等情形發生。

這二個引入檔案的函數 , 所有的功能都和前面介紹的 require() 和 include() 相同。

被引入的檔案 , 無論程式的結構如何 , 引入檔只會被引入一次。

Page 9: PHP 5   引入檔 及 檔案處理

檔案處理檔案處理基本檔案處理寫入檔案讀取檔案網頁計數器 - 文字版

Page 10: PHP 5   引入檔 及 檔案處理

基本檔案處理基本檔案處理將資料儲存起來 , 方便日後使用。檔案的處理大致上可以分成四個基本動作

◦開啟檔案◦儲存資料◦讀取資料◦關閉檔案

Page 11: PHP 5   引入檔 及 檔案處理

寫入檔案寫入檔案將資料寫入檔案中可以分成三個步驟

◦開啟檔案 若檔案不存在可自行產生◦寫入檔案◦關閉檔案

Page 12: PHP 5   引入檔 及 檔案處理

開啟檔案開啟檔案開啟檔案格式int fopen ( 檔案名稱 , 開啟形式 , [ 是否使用

include_path])

當檔案開檔成功後會傳回一個檔案指標 (file pointer) 來指向開啟的檔案。若是開檔失敗則會傳回 false 。

[ 檔案名稱 ] 就是欲開啟檔案的名稱。 [ 開啟形式 ] 指定開啟檔案的用途是讀取或是寫入等

第三個參數是一個選用參數 , 當設定為 1 時會搜尋 include_path 。

Page 13: PHP 5   引入檔 及 檔案處理

開啟檔案開啟檔案開啟形式參數

參 數 說 明

r 開啟唯讀檔。

r+ 開啟可讀可寫檔 , 將檔案指標放在起始位置。

w 開啟寫入檔 , 並清除檔案內容。

w+開啟可讀可寫檔 , 將檔案清除 , 並將檔案指標放在起始位置。

a 開啟寫入檔 , 並將指標指向檔尾

a+ 開啟可讀可寫檔 , 並將指標指向檔尾 .

Page 14: PHP 5   引入檔 及 檔案處理

寫入檔案寫入檔案使用 fputs() 函數 , 其格式如下:

int fputs ( 檔案指標 , 寫入資料 , [ 寫入長度 ])

◦此函數會將欲 [ 寫入資料 ] 存入 [ 檔案指標 ] 所指向的檔案中。

◦如果有指定 [ 寫入長度 ] 僅寫入所指定的寫入長度◦當寫入完成 fputs() 會傳回寫入長度 , 若失敗則會傳回 false.

Page 15: PHP 5   引入檔 及 檔案處理

關閉檔案關閉檔案關閉檔案 , 使用的函數是 fclose()其格式如下: int fclose( 檔案指標 )◦關閉 [ 檔案指標 ] 所指向的檔案。

Page 16: PHP 5   引入檔 及 檔案處理

寫入檔案 範例寫入檔案 範例1: <html>2: <title> 寫入檔案 </title>3: <body>4: 寫入 1..9 。 <p>5: <?php6: if (!$fp=fopen("number.txt","w")){7: echo " 檔案無法開啟 ";8: exit;9: }10: for ($i=1; $i<=9; $i++){11: $len=fputs($fp,$i) ;12: echo " 寫入 $i ==> 寫入長度 : $len<br/>" ;13: }14: fclose($fp) ;15: ?>16: 寫入成功。17: </body>18: </html>

Page 17: PHP 5   引入檔 及 檔案處理

讀取檔案讀取檔案讀取檔案的動作分成三個步驟

◦開啟檔案 與剛剛相同◦讀取檔案◦關閉檔案 與剛剛相同

Page 18: PHP 5   引入檔 及 檔案處理

讀取檔案讀取檔案讀取檔案可使用 fgets() 函數 , 其格式如下: string fgets ( 檔案指標 [, 讀取長度 ])

◦檔案指標是指已開啟的檔案指標◦設定讀取長度 len, 則讀取 len-1 個字元 , 沒有設定讀取長度則預設值為 1024 bytes

◦讀取成功傳回讀取字串 , 若失敗則傳回 false.◦此函數一次讀取檔案中的一行字串

Page 19: PHP 5   引入檔 及 檔案處理

讀取檔案 範例讀取檔案 範例

: <html>2: <title> 讀取檔案 </title>3: <body>4: 讀取檔案 <p>5: <?php6: $f=fopen("number.txt","r") ;7: $s=fgets($f) ;8: echo " 讀取內容 : $s <p>" ;9: fclose($f) ;10: ?>11: 讀取完畢12: </body>13: </html>

Page 20: PHP 5   引入檔 及 檔案處理

讀取檔案 範例讀取檔案 範例1: <html>2: <title> 公 佈 欄 </title>3: <body>4: <b> 公 佈 欄 </b> <p>5: <?php6: $fp=fopen("board.txt","r");7: $i=0 ;8: echo "<table width=200 border=0><caption> 公告內容 </caption>";9: while (!feof($fp)){10: $str=fgets($fp) ;11: $i++;12: $i%2==0 ? $color="ffffc2" : $color="d2ffff";13: echo "<tr bgcolor=$color><td width=20>$i</td><td>$str</td></tr>" ;14: }15: echo "</table><p>";16: echo " 共 $i 筆公告事項 ";17: fclose($fp) ;18: ?>19: </body>20: </html>

Page 21: PHP 5   引入檔 及 檔案處理

<?php$file = fopen("url.txt", "r");echo "<ul>";while (!feof($file)) { $str1 = fgets($file); list($name, $url) = explode(", ", $str1); echo "<li><a href=\"$url\">$name</a></li>";

}echo "</ul>";fclose($file);?>

Yahoo!, http://www.yahoo.com/Google, http://www.google.com/Yam, http://n.yam.com/PHP(w3schools), http://www.w3schools.com/PHP/DEfaULT.asP暨南大學 , http://www.ncnu.edu.tw/暨大資管系 , http://www.im.ncnu.edu.tw/網頁程式設計 , http://www.im.ncnu.edu.tw/~ycchen/www2009/

url.txt

Page 22: PHP 5   引入檔 及 檔案處理

網頁計數器網頁計數器 -- 文字版文字版1: <?php2: if (file_exists("count.txt")){3: $ff=fopen("count.txt","r") ;4: $c=fgets($ff) ;5: $c++;6: fclose($ff) ;7: }else{8: $c=1 ;9: }10: $ff=fopen("count.txt","w");11: fputs($ff,$c) ;12: fclose($ff) ;13: ?>14: <html>15: <title> 文字版計數器 </title>16: <body>17: <center>18: 歡迎您光臨本站 , 您是第 <?php echo $c ; ?> 位訪客19: </center>20: </body>21: </html>

Page 23: PHP 5   引入檔 及 檔案處理

檔案上傳所謂檔案上傳,就是將檔案由客戶端的主機,藉由瀏覽器傳送到伺服器的資料夾上。

在網頁中將檔案由客戶端上傳到伺服器中,其中要經歷的過程如下:

1.在表單檔案欄位選取要上傳的檔案。 2.表單送出,將檔案傳送到伺服器。3.伺服器在接收的過程中,先將接收到的檔案放置在暫存資料

夾中。4.傳送完畢後將完整的檔案搬移到指定的網頁資料夾中。

Page 24: PHP 5   引入檔 及 檔案處理

檔案上傳 參數調整在使用檔案上傳的功能前,對於 PHP 的執行環境要進行以下的檢查及調整。

是否允許上傳 file_uploads=On

請開啟允許網頁伺服器允許上傳的設定:暫存檔資料夾 upload_temp_dir=“C:\Windows\

Temp”

在檔案上傳到網頁伺服器時會先放在暫存資料夾,完成後才搬到指定資料夾。若沒有設定暫存資料夾會造成上傳失敗,若在 Windows 系統中您可以參考以下設定:

可接受上傳檔案大小 upload_max_filesize= 8M

在 <php.ini> 中預設的大小為 2MB ,建議您可以調整為 8MB 到 10MB 之間,適用於大部份的需求。

Page 25: PHP 5   引入檔 及 檔案處理

檔案上傳 表單上傳檔案的表單,有幾個重要的注意事項:1.在 <form> 標籤中「 action 」屬性必須設定要接收檔案的 PHP 程式檔。

2.在 <form> 標籤中,傳送方式屬性必須要設定為「 method="post" 」,因為檔案上傳的表單的傳送一定要使用 POST 的方法。

3.在 <form> 標籤中,因為傳送檔案所以要設定傳遞時資料的編碼方式,這裡要加上「 enctype="multipart/form-data" 」的屬性,才能正確地讓檔案欄位送出。

4.上傳的檔案欄位為 <input> 標籤,屬性必須設定「 type="file" 」,如此即可在使用時出現 瀏覽 鈕,讓使用者選取要上傳的檔案。

Page 26: PHP 5   引入檔 及 檔案處理

接收上傳檔案在程式端接收到檔案,並不是馬上將檔案放置到指定的資料夾中,而是先將檔案儲存成暫存檔,在完成檔案傳輸後再將檔案搬移到指定資料夾。

取得暫存檔資訊您可以使用 $_FILES 取得暫存檔的資訊,參考次頁:

Page 27: PHP 5   引入檔 及 檔案處理
Page 28: PHP 5   引入檔 及 檔案處理

上傳檔案範例php_file9.html

Page 29: PHP 5   引入檔 及 檔案處理

上傳檔案範例

Page 30: PHP 5   引入檔 及 檔案處理

多檔上傳若您有上傳多個檔案的需求,在表單欄位佈置上也必須在表單名稱後加上 [][]左右括號,讓表單欄位以陣列方式傳送。

在接收時以 $_FILES 陣列方式接收即可完成。但是要注意的是這個陣列是二維陣列

例如 第一個檔案 :

暫存檔名稱: $_FILES[ 欄位名稱 ] ["tmp_name"][0]

原始名稱: $_FILES[ 欄位名稱 ]["name"][0]

第二個檔案 : 暫存檔名稱: $_FILES[ 欄位名稱 ]["tmp_name"][1]

原始名稱: $_FILES[ 欄位名稱 ]["name"][1]

Page 31: PHP 5   引入檔 及 檔案處理

多檔上傳範例

Page 32: PHP 5   引入檔 及 檔案處理

多檔上傳範例