引入檔 (include, require) 檔案處理 檔案上傳

Slides:



Advertisements
Similar presentations
第六章 网页设计与制作基础.
Advertisements

第 4 章 PHP 基本語法.
計算機程式語言實習課.
第8讲 HTML与PHP基础 静态网页 vs. 动态网页.
第十三章 文件.
File Access 井民全製作.
Ch07 PHP程式基礎 網頁程式設計.
PHP+MySQL互動式網頁程式設計班 PHP進階語法 講師:林業峻 CSIE, NTU 6/ 19, 2010.
第四章 網頁表單與資料傳遞.
PHP +MySQL快速入門 Lesson 4.
PHP與MySQL連結 大葉大學 資工系 黃鈴玲.
PHP 5 入門基礎 第一個PHP 程式 PHP 資料型態.
JAVA 程式設計與資料結構 第十二章 JAR File.
Ch11 檔案存取 網頁程式設計.
JAVA 程式設計與資料結構 第六章 輸出與輸入.
客戶端的檔案上傳 HtmlInputFile檔案控制項 上傳單一檔案 同時上傳多個檔案.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
進階 WWW 程式設計 -- PHP Regular Expression 靜宜大學資訊管理學系 蔡奇偉副教授 2004
SQL Stored Procedure SQL 預存程序.
PHP+MySQL互動式網頁程式設計班 檔案上傳程式設計 講師:林業峻 CSIE, NTU 7 / 3, 2010.
檔案上傳 所謂檔案上傳,就是將檔案由客戶端的主機,藉 由瀏覽器傳送到伺服器的資料夾上。
PHP 程式流程控制結構.
Echo Server/Client Speaker:Fang.
進階 WWW 程式設計 -- PHP 語言結構(三) 靜宜大學資訊管理學系 蔡奇偉副教授 2003
|13 檔案資料讀寫.
App Inventor2呼叫PHP存取MySQL
檔案與磁碟的基本介紹.
Java 程式設計 講師:FrankLin.
FTP檔案上傳下載 實務與運用.
第10章 檔案與資料夾處理 10-1 C語言的檔案輸入與輸出 10-2 文字檔案的讀寫 10-3 二進位檔案的讀寫
第10章 檔案與資料夾處理 10-1 檔案的基礎 10-2 文字檔案的讀寫 10-3 二進位檔案的讀寫 10-4 檔案與資料夾處理.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
PHP 變數、常數與運算子 變數 常數 運算子
表單(Form).
PHP5與MySQL4 入門學習指南 凱文瑞克 著 第 16 章 檔案處理.
VS.NET 2003 IDE.
建立一 function s (type) 可以用來繪製cyclic-harmonic curves
FileUpload控制項 建國科技大學 資管系 饒瑞佶 2007年.
HTML 103 互動式網頁.
第一個cordova project Cordova project建立與平台設定,均藉由cli(command line interface來完成 建立project請打開命令提示字元視窗應輸入下列命令 cordova create hello tw.edu.stust.mis.hello HelloWorld.
檔案上傳
Ch09 在網頁之間傳遞資訊 網頁程式設計.
表單(Form).
讓Emulator可以 使用Android Market
表格(HTML – FORM).
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
期末考.
HTML 103 互動式網頁 助教:黃毓瑩.
個人網路空間 資訊教育.
PHP 5 引入檔 及 檔案處理 引入檔 檔案處理 檔案上傳.
GridView.
SOCKET( ).
FTP使用教學 簡介: 軟體名稱:FileZilla 軟體性質:Freeware 版本: 繁體中文版
引用檔案.
File Input and Output Chap. 11: 施威銘的書 Chap. 7: K&R.
第6章 PHP的数据采集.
表格(HTML – FORM)
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
挑戰C++程式語言 ──第7章 輸入與輸出.
從HTML表格到CSS 靜宜大學 資管系 楊子青.
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
PHP程式設計 五、程式流程控制結構 建國科技大學 資訊管理學系 饒瑞佶.
如何從政大圖書館館藏目錄匯出書目至EndNote
Brief Guide of FrontPage
班級:博碩子一甲 授課老師:鐘國家 助教:陳國政
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
Unix指令4-文字編輯與程式撰寫.
Develop and Build Drives by Visual C++ IDE
表单页面 表单是用户利用浏览器对Web站点网络数据库进行查询的一种界面,用户利用表单可以输入信息或选择选项等,然后将这些信息提交给服务器进行处理。通过表单,既可以将浏览器的信息发送到Internet服务器上,同时表单也可以使用户与站点的浏览者交互或从浏览者那里收集信息。它是网页的设计者和使用者相互交流的工具。表单对象包括文本域(单行、多行、密码)、列表、菜单、复选框、单选框、按钮等。
Presentation transcript:

引入檔 (include, require) 檔案處理 檔案上傳 PHP 5 引入檔 及 檔案處理 引入檔 (include, require) 檔案處理 檔案上傳

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

require() require() 的功能是將引入檔的內容取代 require() 所在的位置。 require() 本身並不提供回傳值 (return) 的功能 require() 格式如下: require (引入檔檔名) require '引入檔檔名' require $某個存入檔名的變數

require() 範例 引入檔var_inc.php內容如下 <?php $Width=100 ; $Height=5 ; define (CrLf ,"<br/>" ); ?> 1: <?php require("var_inc.php") ?> 2: <html> 3: <title>require()</title> 4: <body> 5: <?php 6: 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>

include() include() 也是將一個外部檔案內容引入到 程式中使用的指令, 和 require()最大的差別 在於 請特別注意, 若引入檔存在,無論執行與否 require() 的內容一定會被讀進來。若不存在,則 require() 顯示警告訊息後,就不執行了

include() 範例 add_inc.php內容如下 <? echo "進入 include file <br>" ; return $a+$b ; ?> 1: <html> 2: <title>Include</title> 3: <body> 4: <?php 5: $a=10 ; 6: $b=20 ; 7: $c=include ("add_inc.php") ; 8: echo "回到主程式 : <br>" ; 9: echo "A,B二數和是 $c" ; 10: ?> 11: </body> 12: </html>

require、include的差異 回傳值不同 引入時間不同 錯誤處理不同。 include() 可以有回傳值

require_once() 和include_once() 這二個引入檔案的函數, 所有的功能都和前面介 紹的 require() 和 include() 相同。 被引入的檔案, 無論程式的結構如何, 引入檔只 會被引入一次。

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

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

寫入檔案 將資料寫入檔案中可以分成三個步驟 開啟檔案 若檔案不存在可自行產生 寫入檔案 關閉檔案

開啟檔案 開啟檔案格式 int fopen (檔案名稱, 開啟形式, [是否使用include_path]) 當檔案開檔成功後會傳回一個檔案指標 (file pointer) 來指向開啟的檔案。若是開檔失敗則會傳回 false。 檔案名稱: 欲開啟檔案的名稱。 開啟形式: 指定開啟檔案的用途為讀取或寫入等 第三個參數: 選用參數, 當設定為 1 時會搜尋include_path。

開啟檔案 開啟形式參數 參 數 說 明 r 開啟唯讀檔。 r+ 開啟可讀可寫檔, 將檔案指標放在起始位置。 w 說 明 r 開啟唯讀檔。 r+ 開啟可讀可寫檔, 將檔案指標放在起始位置。 w 開啟寫入檔, 並清除檔案內容。 w+ 開啟可讀可寫檔, 將檔案清除, 並將檔案指標放在起始位置。 a 開啟寫入檔, 並將指標指向檔尾 a+ 開啟可讀可寫檔, 並將指標指向檔尾.

寫入檔案 使用 fputs() 函數, 其格式如下: int fputs (檔案指標, 寫入資料, [寫入長度]) 此函數會將欲 寫入資料存入 檔案指標 所指向的檔案中。 如果有指定 [寫入長度] 僅寫入所指定的寫入長度 當寫入完成 fputs()會傳回寫入長度, 若失敗則會傳回 false.

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

寫入檔案 範例 1: <html> 2: <title>寫入檔案</title> 3: <body> 4: 寫入1..9 。<p> 5: <?php 6: 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>

讀取檔案 讀取檔案的動作分成三個步驟 開啟檔案 與剛剛相同 讀取檔案 關閉檔案 與剛剛相同

讀取檔案 讀取檔案可使用 fgets() 函數, 其格式如下: string fgets (檔案指標 [,讀取長度]) Gets a line from file pointer 檔案指標是指已開啟的檔案指標 設定讀取長度 len, 則讀取 len-1 個字元, 沒有設 定讀取長度則預設值為 1024 bytes 讀取成功傳回讀取字串, 若失敗則傳回 false. 此函數一次讀取檔案中的一行字串

讀取檔案 範例 bool feof ( resource $handle ) 1: <html> 2: <title>公 佈 欄</title> 3: <body> 4: <b>公 佈 欄</b> <p> 5: <?php 6: $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> bool feof ( resource $handle ) : Tests for end-of-file on a file pointer

讀取檔案 範例 product.txt <table> <?php p001, Eee Pad TF300T, 17900 p002, HTC Flyer 飛行平板電腦, 16900 p003, Sony Tablet SGPT211TW, 16800 p004, Samsung Galaxy Tab 7.7, 19900 p005, Motorola XOOM Android 3.0, 16500 p006, Acer Iconia Tab W500 10.1, 17900 p007, Nokia N1, 8890 p008, ASUS PhonePad 2, 6990 <table> <?php if ($pf = fopen("product.txt", "r")) { while(!feof($pf)) { $line = chop(fgets($pf)); list($pid, $pName, $price) = explode(", ", $line); echo "<tr><th>$pid</th><td>$pName</td>"; echo "<td>NT\$", number_format($price), "</td></tr>"; } else { echo "<tr><td>Product Not Available!</td></tr>"; fclose($pf); ?> </table> http://ycchen.im.ncnu.edu.tw/www2011/lab/php/fgets.zip

url.txt 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/ <?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); ?>

網頁計數器-文字版 1: <?php 2: 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>

檔案上傳 所謂檔案上傳,就是將檔案由客戶端的主機,藉 由瀏覽器傳送到伺服器的資料夾上。 在網頁中將檔案由客戶端上傳到伺服器中,其中要經歷的 過程如下: 在表單檔案欄位選取要上傳的檔案。 表單送出,將檔案傳送到伺服器。 伺服器在接收的過程中,先將接收到的檔案放置在暫存資料 夾中。 傳送完畢後將完整的檔案搬移到指定的網頁資料夾中。

檔案上傳 參數調整 在使用檔案上傳的功能前,對於 PHP 的執行環境要進行以 下的檢查及調整。 是否允許上傳 file_uploads=On 請開啟允許網頁伺服器允許上傳的設定: 暫存檔資料夾 upload_temp_dir=“C:\Windows\Temp” 在檔案上傳到網頁伺服器時會先放在暫存資料夾,完成 後才搬到指定資料夾。若沒有設定暫存資料夾會造成上 傳失敗,若在 Windows 系統中您可以參考以下設定: 可接受上傳檔案大小 upload_max_filesize= 8M 在 <php.ini> 中預設的大小為 2MB,建議您可以調整為 8MB 到 10MB 之間,適用於大部份的需求。

檔案上傳 表單 上傳檔案的表單,有幾個重要的注意事項: 在 <form> 標籤中「action」屬性必須設定要接收檔案的 PHP 程式檔。 在 <form> 標籤中,傳送方式屬性必須要設定為「method="post"」,因為檔案上傳的表單的傳送一定要使用 POST 的方法。 在 <form> 標籤中,因為傳送檔案所以要設定傳遞時資料的編碼方式,這裡要加上「enctype="multipart/form-data"」的屬性,才能正確地讓檔案欄位送出。 上傳的檔案欄位為 <input> 標籤,屬性必須設定「type="file"」,如此即可在使用時出現 瀏覽 鈕,讓使用者選取要上傳的檔案。

接收上傳檔案 在程式端接收到檔案,並不是馬上將檔案放置 到指定的資料夾中,而是先將檔案儲存成暫存 檔,在完成檔案傳輸後再將檔案搬移到指定資 料夾。 取得暫存檔資訊 您可以使用 $_FILES 取得暫存檔的資訊,參 考次頁:

上傳檔案範例 upload.html <form action="upload.php" method="post" enctype="multipart/form-data"> 請選取要上傳的檔案:<br /> <input type="file" name="fileUpload" /><br /> <input type="submit" value="上傳檔案" /> <input type="reset" /> </form>

上傳檔案範例 upload.php <?php if($_FILES[" fileUpload "]["error"]==0) { $tmpName = $_FILES[" fileUpload "]["tmp_name"]; $fileName = "./files/" . $_FILES[" fileUpload "]["name"]; if(move_uploaded_file($tmpName, $fileName)) { echo "上傳成功<br />"; echo "檔案名稱:" . $_FILES[" fileUpload "]["name"] . "<br />"; echo "檔案類型:" . $_FILES[" fileUpload "]["type"] . "<br />"; echo "檔案大小:" . $_FILES[" fileUpload "]["size"] . "<br />"; } else { echo "上傳失敗! "; echo "<a href='javascript:window.history.back();'>回上一頁</a>"; } ?> http://ycchen.im.ncnu.edu.tw/www2011/lab/php/fileUpload.zip

move_uploaded_file( ) $tmpName = $_FILES[" fileUpload "]["tmp_name"]; $fileName = "./files/" . $_FILES[" fileUpload "]["name"]; if(move_uploaded_file($tmpName, $fileName)) { }

上傳檔名中文問題 中文版的伺服器若使用 Big5 編碼,但網 頁送過來資料卻是以 UTF8 編碼,將導致 編碼錯誤,檔案上傳失敗。 解決之道: iconv("UTF-8" , "big5" , $utf8FileName) $tmpName = $_FILES["fileUpload"]["tmp_name"]; $fileName = "./files/" . iconv("UTF-8" , "big5" , $_FILES["fileUpload"]["name"]); if(move_uploaded_file($tmpName, $fileName)) { }

Restrictions on Upload $arrTypes =array ("image/gif", "image/png", "image/jpeg", "image/pjpeg"); if (in_array($_FILES["pic"]["type"], $arrTypes) && ($_FILES["pic"]["size"] < 500000)) { if ($_FILES["pic"]["error"] > 0) { echo "Error: " . $_FILES["pic"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["pic"]["name"] . "<br />"; echo "Type: " . $_FILES["pic"]["type"] . "<br />"; echo "Size: " . ($_FILES["pic"]["size"] / 1024) . " Kb<br />"; echo "Stored in: " . $_FILES["pic"]["tmp_name"]; // Move file … else { echo "Invalid file"; ?>

檢查檔案是否已存在 if (file_exists("files/" . $_FILES["pic"]["name"])) { echo $_FILES["pic"]["name"] . " already exists. <br/>"; } else { move_uploaded_file($_FILES["pic"]["tmp_name"], "files/" . $_FILES["pic"]["name"]); echo "Stored in: " . "files/" . $_FILES["pic"]["name"];

$arrTypes =array ("image/gif", "image/png", "image/jpeg", "image/pjpeg"); if (in_array($_FILES["pic"]["type"], $arrTypes) && ($_FILES["pic"]["size"] < 500000)) { if ($_FILES["pic"]["error"] > 0) { echo "Error: " . $_FILES["pic"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["pic"]["name"] . "<br />"; echo "Type: " . $_FILES["pic"]["type"] . "<br />"; echo "Size: " . round(($_FILES["pic"]["size"] / 1024),2) . " Kb<br />"; echo "Stored in: " . $_FILES["pic"]["tmp_name"] . "<br/>"; if (file_exists("files/" . $_FILES["pic"]["name"])) { echo $_FILES["pic"]["name"] . " already exists. "; move_uploaded_file($_FILES["pic"]["tmp_name"], "files/" . $_FILES["pic"]["name"]); echo "Stored in: " . "files/" . $_FILES["pic"]["name"]; echo "Invalid file";

imgUpload.html imgUpload.php 

多檔上傳 若您有上傳多個檔案的需求,在表單欄位佈置上也必 須在表單名稱後加上[]左右括號,讓表單欄位以陣列 方式傳送。 在接收時以 $_FILES 陣列方式接收即可完成。但是要 注意的是這個陣列是二維陣列 例如 第一個檔案: 暫存檔名稱:$_FILES[欄位名稱] ["tmp_name"][0] 原始名稱:$_FILES[欄位名稱]["name"][0] 第二個檔案: 暫存檔名稱:$_FILES[欄位名稱]["tmp_name"][1] 原始名稱:$_FILES[欄位名稱]["name"][1]

多檔上傳範例 <form action="php_file10.php" method="post" enctype="multipart/form-data"> 請選取要上傳的檔案:<br /> 檔案一:<input type="file" name="fileUpload[]" /><br /> 檔案二:<input type="file" name="fileUpload[]" /><br /> 檔案三:<input type="file" name="fileUpload[]" /><br /> <input type="submit" value="送出資料" />

多檔上傳範例 <?php $cnt=count($_FILES["fileUpload"]["name"]); for ($i=0;$j<$cnt;$i++) { if ($_FILES["fileUpload"]["error"][$i]==0) { if (move_uploaded_file($_FILES["fileUpload"]["tmp_name"][$i], "./files/".$_FILES["fileUpload"]["name"][$i])) { echo $_FILES["fileUpload"]["name"][$i]."上傳成功!<br />"; } else { echo $_FILES["fileUpload"]["name"][$i]."上傳失敗!<br />"; } ?>