網頁資料傳送–客戶端 <ul><li>利用 FrontPage 製作表單,包含 text, textarea, checkbox, radio, menu-list 等,主要傳送設定為 </li></ul><ul><ul><li>傳送方式: p...
網頁資料傳送–伺服器端 <ul><li>以 FrontPage 或記事本撰寫 FormTest.php </li></ul><ul><ul><li>PHP 為一種內嵌式語言,與 html 語法混合使用,主要架構如下 <?php php 語法區塊...
<?php echo &quot;Current time is &quot;; echo date(&quot;h:i&quot;); // current time //Server Information echo &quot;<br>I...
伺服器資訊 Client Site Server Site 主從式架構 資料傳送 接收資料
變數與資料型態 <ul><li>命令句 </li></ul><ul><ul><li>在 PHP 中,每一個命令句必須以分號;作結束。 </li></ul></ul><ul><li>註解列 (Comment Line) </li></ul><ul...
變數與資料型態 <ul><li>資料型態 (Data Type) </li></ul><ul><ul><li>整數 (int, integer) :不帶小數點的數字,如 0, 10, -5 </li></ul></ul><ul><ul><li>...
變數生命週期 <ul><li>全域變數與區域變數生命週期 </li></ul><ul><ul><li>所有變數都是獨立的,在其生命週期內不可重複使用 </li></ul></ul><ul><ul><li>在最外層區段定義之變數可適用於所有區段,...
基本輸出 <ul><li>基本輸出函式 echo </li></ul><ul><ul><li>echo 可將變數及資料轉換為字串輸出,不同變數資料間用句點 (.) 加以連接 </li></ul></ul><ul><ul><li>語法 echo ...
運算元 (Operator) <ul><li>數學運算元 </li></ul><ul><li>邏輯運算元 </li></ul>$a / $b  除號 / 將變數減一  減一 -- $a * $b  乘號 * 將變數加一  加一 ++ $a - ...
<ul><li>比較運算元 </li></ul><ul><li>運算元優先順序 </li></ul>$a 大於或等於 $b 時成立  大於或等於 $a >= $b $a 小於或等於 $b 時成立  小於或等於 $a <= $b $a 大於 $b...
陣列資料型態 <ul><li>使用時機 </li></ul><ul><ul><li>用於記錄多筆相同資料型態的變數 </li></ul></ul><ul><li>一維陣列宣告語法 </li></ul><ul><ul><li>$ 變數名  = a...
陣列資料型態 <ul><li>一維陣列宣告範例 </li></ul><ul><ul><li>$fruit = array(“apple”, “orange”, “cherry”); </li></ul></ul><ul><ul><li>$fru...
控制流程  -  邏輯判斷 <ul><li>if </li></ul><ul><ul><li>if ( 比較式 ) { 比較式成立時 執行此區段 ; } </li></ul></ul><ul><li>if … else </li></ul><u...
控制流程  -  邏輯判斷 <ul><li>if … elseif … else </li></ul><ul><ul><li>if ( 比較式 1){ 執行區段 1 }elseif ( 比較式 2){ 執行區段 2 }else{ 執行區段 } ...
控制流程  -  邏輯判斷範例 if($fruit == “apple”){ $myfruit = “ 蘋果” ;  }elseif($fruit==“orange”){ $myfruit == “ 柳橙” ; }else{ $myfruit=...
控制流程 – 迴圈結構 <ul><li>for 迴圈 </li></ul><ul><ul><li>for( 記數起始條件 ;  記數終止條件 ;  記數累進 ) { 執行區段 ; } </li></ul></ul><ul><li>while 迴...
控制流程 – 迴圈結構 <ul><li>do 迴圈 </li></ul><ul><ul><li>do{ 執行區段 ; } while( 判斷式 ); </li></ul></ul><ul><li>foreach 迴圈 </li></ul><ul...
子程式與函式 <ul><li>定義函式 (Function) </li></ul><ul><ul><li>定義語法 function  函數名 (){ … } </li></ul></ul><ul><ul><li>呼叫函數 函數名 (); </...
PHP 常用函式庫 <ul><li>參考官方網站如下 </li></ul><ul><ul><li>http://tw2.php.net/manual/en/funcref.php </li></ul></ul><ul><li>與伺服器相關函式 ...
PHP 常用函式庫 <ul><li>多媒體資料處理函式 </li></ul><ul><ul><li>影像讀取、串流處理、影像壓縮、…等等 </li></ul></ul><ul><li>檔案格式轉換與資料處理函式 </li></ul><ul><u...
PHP 相關教學網站 <ul><li>http://member.ettoday.com/book/index.php.htm </li></ul><ul><li>http://php.igt.com.tw/ </li></ul><ul><li...
檔案資料處理 <ul><li>開啟檔案 </li></ul><ul><ul><li>$f = fopen(“ 檔案位置” , ‘w | r | a | b | t | …’) </li></ul></ul><ul><ul><ul><li>‘ w...
檔案管理 <ul><li>瀏覽檔案 </li></ul><ul><ul><li>檔案是否存在: file_exists(“ 檔案位置” ) </li></ul></ul><ul><ul><li>檢查檔案大小: filesize(“ 檔案位置” ...
<?php $f = fopen(“test.txt”,&quot;r&quot;); $backup = “test.txt.bak&quot;; $fw = fopen($backup,&quot;w&quot;); while(!feof...
<?php echo &quot;<br>The file name: &quot;.$_FILES['file']['name']; echo &quot;<br>The file size: &quot;.$_FILES['file']['...
連線資訊處理 <ul><li>伺服器資訊 </li></ul><ul><ul><li>_SERVER[“ 伺服器參數” ] </li></ul></ul><ul><ul><ul><li>伺服器參數可取得本機或遠端登錄位址等相關資訊,例如 </l...
<?php $username = $_POST[&quot;username&quot;]; $password = $_POST[&quot;password&quot;]; session_start(); session_registe...
物件導向概念 <ul><li>類別 (class) 的架構 </li></ul><ul><ul><li>定義 </li></ul></ul><ul><ul><ul><li>class class_name { … } </li></ul></u...
物件導向概念 <ul><li>繼承 (inheritance) </li></ul><ul><ul><li>Class B 繼承 Class A ,則 Class B 將自動擁有 Class A 所有的方法 </li></ul></ul><ul...
class CarModel { private $color; protected $model; function CarModel($color=NULL, $model=NULL) { $this->color = $color; $t...
Upcoming SlideShare
Loading in...5
×

Lecture 9

536

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
536
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lecture 9

  1. 1. 網頁資料傳送–客戶端 <ul><li>利用 FrontPage 製作表單,包含 text, textarea, checkbox, radio, menu-list 等,主要傳送設定為 </li></ul><ul><ul><li>傳送方式: post </li></ul></ul><ul><ul><li>控制檔名: FormTest.php </li></ul></ul><ul><ul><li>各欄位名稱如下,其中 course 及 sport 允許多重選擇 </li></ul></ul><form action=&quot;FormTest.php&quot; method=&quot;post“> <input type=&quot;text&quot; name=&quot;textfield&quot;> <textarea name=&quot;textarea&quot;></textarea> <input type=&quot;checkbox&quot; name=&quot;course[]“ value=…> <input name=&quot;degree&quot; type=&quot;radio&quot; value=…> <select name=&quot;department&quot;> <option value=…>…</option> </select> <select name=&quot;sport[]&quot; size=&quot;5&quot; multiple> <option selected value=…>…</option> </select> </form>
  2. 2. 網頁資料傳送–伺服器端 <ul><li>以 FrontPage 或記事本撰寫 FormTest.php </li></ul><ul><ul><li>PHP 為一種內嵌式語言,與 html 語法混合使用,主要架構如下 <?php php 語法區塊 ?> </li></ul></ul><ul><ul><li>echo “ 輸出字串” . 變數或函式 </li></ul></ul><ul><ul><ul><li>輸出字串即為以 html 語法格式呈現在網頁上的內容 </li></ul></ul></ul><ul><ul><ul><li>變數或函式則為 php 程式中所定義,在此會自動轉成字串型態 </li></ul></ul></ul><ul><ul><ul><li>利用句點 (dot) “ . “ 將字串連接起來 </li></ul></ul></ul><ul><ul><li>$_POST[‘fieldname’] </li></ul></ul><ul><ul><ul><li>接收客戶端對應之表單內各元件定義於 value 屬性所傳之資料 </li></ul></ul></ul><ul><ul><ul><li>fieldname 即為元件名稱,如表單內對應元件名稱後面加上 [] ,表示接受到的資料為陣列格式 ( 即多重選擇之資料 ) </li></ul></ul></ul><ul><ul><li>$_GET[‘fieldname’] </li></ul></ul><ul><ul><ul><li>如同 _POST 用法,當客戶端所定義的表單方法 method=get 時使用 </li></ul></ul></ul><ul><ul><li>$_SERVER[‘server_param’] </li></ul></ul><ul><ul><ul><li>取得伺服器資訊, server_param 即為相關參數 </li></ul></ul></ul><ul><ul><li>註解符號 (Comment Line) : // </li></ul></ul>
  3. 3. <?php echo &quot;Current time is &quot;; echo date(&quot;h:i&quot;); // current time //Server Information echo &quot;<br>IP address is &quot;.$_SERVER[&quot;REMOTE_ADDR&quot;]; echo &quot;<br>Server is &quot;.$_SERVER[&quot;SERVER_NAME&quot;]; echo &quot;<br>Browswe is &quot;.$_SERVER[&quot;HTTP_USER_AGENT&quot;]; echo &quot;<br>Current document is &quot;.$_SERVER[&quot;PHP_SELF&quot;]; echo &quot;<br>Web page root is is &quot;.$_SERVER[&quot;DOCUMENT_ROOT&quot;]; echo &quot;<br>Server software is &quot;.$_SERVER[&quot;SERVER_SOFTWARE&quot;]; //echo &quot;<br>the data from textfield is &quot;.$_GET[&quot;textfield&quot;]; echo &quot;<br>The data from textfield is &quot;.$_POST[&quot;textfield&quot;]; echo &quot;<br>The data from textarea is &quot;.$_POST[&quot;textarea&quot;]; $course = $_POST[&quot;course&quot;]; echo &quot;<br>The data from checkbox are<br>&quot;; for($i=0; $i<count($course); $i++) echo $course[$i].&quot;<br>&quot;; echo &quot;<br>The data from radiobutton is &quot;.$_POST[&quot;degree&quot;]; echo &quot;<br>The data from single-list is &quot;.$_POST[&quot;department&quot;]; echo &quot;<br>The data from multi-list is &quot;.$_POST[&quot;sport&quot;].&quot; as follows:<br>&quot;; foreach($_POST[&quot;sport&quot;] as $sport) echo $sport.&quot;<br>&quot;; ?>
  4. 4. 伺服器資訊 Client Site Server Site 主從式架構 資料傳送 接收資料
  5. 5. 變數與資料型態 <ul><li>命令句 </li></ul><ul><ul><li>在 PHP 中,每一個命令句必須以分號;作結束。 </li></ul></ul><ul><li>註解列 (Comment Line) </li></ul><ul><ul><li>註解列是在說明程式內容,不會予以執行, PHP 的註解方式與 C/C++/Java 相同 </li></ul></ul><ul><ul><li>單行註解: // 單行說明文字 </li></ul></ul><ul><ul><li>多行註解: /* 多行註解區段 */ </li></ul></ul><ul><li>變數 (Variable) </li></ul><ul><ul><li>變數是用來儲存程式執行時的暫存資料,變數之前必需加 $ 的符號。 </li></ul></ul><ul><ul><li>PHP 的大小寫是有差別的 (Case Sensitive) ,故使用變數時,須注意大小寫是否一致。 </li></ul></ul><ul><ul><li>PHP 是屬於 weakly typed 的程式語言,對資料型態的規範較鬆,不需經宣告變數,就可以直接使用。 </li></ul></ul><ul><li>常數 (Constant) </li></ul><ul><ul><li>常數表不會變動的值,利用 define 函式定義: define(“ 常數名” , 常數值 ) 。 </li></ul></ul><ul><ul><li>例如 define(“TIREPRICE”, 2500); define($tireprice, 2500); define(“tirebrand”, “GoodYear”); </li></ul></ul>
  6. 6. 變數與資料型態 <ul><li>資料型態 (Data Type) </li></ul><ul><ul><li>整數 (int, integer) :不帶小數點的數字,如 0, 10, -5 </li></ul></ul><ul><ul><li>浮點數 (float, double) :有帶小數點的數字,如 3.5234, -23.43 </li></ul></ul><ul><ul><li>布林變數 (bool, boolean) :邏輯判斷值, true 或 false </li></ul></ul><ul><ul><li>字元與字串 (string) :文字資料,以雙引號 (“) 或單引號 (‘) 標示, 如”中國醫大” , “1.54”, “Taiwan”, ‘C’ </li></ul></ul><ul><li>資料型別轉換 (Data Converse) </li></ul><ul><ul><li>( 資料型別 )$ 變數名稱,或 settype($ 變數名稱 , 資料型別 ) </li></ul></ul><ul><ul><li>例如, $data = 67.52  為實數 ( 浮點數 ) ,則 (int)$data 或 settype($data, int)  67 (string)$data  “67.52” (float)(“67.52”) 或 (double)(“67.52”)  67.52 </li></ul></ul><ul><ul><li>利用 gettype($ 變數名稱 ) ,可取得資料型別 </li></ul></ul><ul><ul><li>相同資料型態的變數方可進行運算,否則要先經過型別轉換。 </li></ul></ul><ul><li>插入資料 </li></ul><ul><ul><li>require(“ 資料檔名” ) :將經常於各程式裡重複使用的文字資料插入程式的某個區段中 例如: require(“inc.php”); </li></ul></ul><ul><ul><li>include(“ 資料檔名” ) :和 require() 功能相同,但可使用在迴圈或判斷結構中以便動態插入多筆資料 例如: include($file[$i]); </li></ul></ul>
  7. 7. 變數生命週期 <ul><li>全域變數與區域變數生命週期 </li></ul><ul><ul><li>所有變數都是獨立的,在其生命週期內不可重複使用 </li></ul></ul><ul><ul><li>在最外層區段定義之變數可適用於所有區段,稱之為全域變數 </li></ul></ul><ul><ul><li>位於 { } 區段內的變數,只能在此區段內之各區段使用,為區域變數 </li></ul></ul><ul><ul><li>如下例錯誤示範中,假設變數 $money 在此之前尚未被定義,則只能在第一個 { } 內有效,在第二個 { } 內則無法使用;同理 $j 在內層的 { } 可以輸出,但 $j 在外層的 { } 則失效。 </li></ul></ul>If (true) { $money = 100 ; echo $money ; } else { echo $money; } for ($i=0; $i<10; $i++) { echo $j ; for ($j=0; $j<10; $j++) { echo $i * $j; } } 錯誤
  8. 8. 基本輸出 <ul><li>基本輸出函式 echo </li></ul><ul><ul><li>echo 可將變數及資料轉換為字串輸出,不同變數資料間用句點 (.) 加以連接 </li></ul></ul><ul><ul><li>語法 echo 輸出資料一 . 輸出資料二 ; </li></ul></ul><ul><li>保留字與跳脫字元 </li></ul><ul><ul><li>定義變數時,不可使用 php 預設的保留字,例如 $ 符號等 </li></ul></ul><ul><ul><li>如欲輸出這些保留字,則須在前面加上跳脫字元 ,例如 $money=100 ; echo “ 今天賺了新台幣 $$money” ; 輸出則為:今天賺了新台幣 $100 </li></ul></ul>以 8 進位表示某一個字元 x00 ~ xFF 換行字元 以 16 進位表示某一個字元 00 ~ 377 顯示倒斜線符號 進格字元 顯示雙引號符號 &quot; &quot; 歸位字元 顯示金錢符號 $ $ 代表意義 跳脫字元 代表意義 跳脫字元
  9. 9. 運算元 (Operator) <ul><li>數學運算元 </li></ul><ul><li>邏輯運算元 </li></ul>$a / $b 除號 / 將變數減一 減一 -- $a * $b 乘號 * 將變數加一 加一 ++ $a - $b 減號 - 10 % 7 ( 得餘數為 3) 餘數 % $a + $b 加號 + 範例 意義 運算元 範例 意義 運算元 只要有一變數為真則成立 $a || $b NOT || 當二個變數皆為真 (True) 時成立 $a &&$b AND && 若變數為真, NOT 運算後為假,反之亦然 !$a NOT 運算 ! 只一變數為真且另一變數為假 (False) 時才成立 $a ^ $b XOR 運算 xor 只要有一變數為真則成立 $a | $b OR 運算 or 當二個變數皆為真 (True) 時成立 $a & $b AND 運算 and 解說 用法 代表意義 運算元
  10. 10. <ul><li>比較運算元 </li></ul><ul><li>運算元優先順序 </li></ul>$a 大於或等於 $b 時成立 大於或等於 $a >= $b $a 小於或等於 $b 時成立 小於或等於 $a <= $b $a 大於 $b 時成立 大於 $a > $b $a 小於 $b 時成立 小於 $a < $b $a 、 $b 不相等且型態也不相等時成立 不相等且型態也不相等 $a !== $b $a 、 $b 不相等時成立 不相等 $a <> $b $a 、 $b 不相等時成立 不相等 $a != $b $a 、 $b 相等且型態相等時成立 相等且同型態 $a === $b $a 、 $b 相等時成立 相等 $a == $b 解說 意義 運算 | 、 || ^ & 、 && == 、 != < 、 <= 、 > 、 >= + 、 - * 、 / 、 % ++ 、 -- 、 ~ 、轉型運算子 優先順序:由左而右由上而下
  11. 11. 陣列資料型態 <ul><li>使用時機 </li></ul><ul><ul><li>用於記錄多筆相同資料型態的變數 </li></ul></ul><ul><li>一維陣列宣告語法 </li></ul><ul><ul><li>$ 變數名 = array( 值一 , 值二 , 值三 ,...); </li></ul></ul><ul><ul><li>$ 變數名 [] = 值 ; </li></ul></ul><ul><ul><li>$ 變數名 = array( 註標順序 => 值 , ... ); </li></ul></ul><ul><ul><ul><li>其中,註標可為整數或字串 </li></ul></ul></ul><ul><li>二維陣列宣告語法 </li></ul><ul><ul><li>$ 變數名 [] = array( 陣列一 , 陣列二 , 陣列三 , …); </li></ul></ul><ul><ul><li>$ 變數名 = array(array( 陣列值 ), array( 陣列值 ),…) </li></ul></ul><ul><ul><ul><li>陣列值如同一維陣列各元素值的賦予方式 </li></ul></ul></ul><ul><ul><ul><li>陣列值亦可用註標順序方式賦予 </li></ul></ul></ul>
  12. 12. 陣列資料型態 <ul><li>一維陣列宣告範例 </li></ul><ul><ul><li>$fruit = array(“apple”, “orange”, “cherry”); </li></ul></ul><ul><ul><li>$fruit[] = “apple”; $fruit[] = “orange”; $fruit[]=“cherry”; </li></ul></ul><ul><ul><ul><li>fruit[0], $fruit[1], $fruit[2] 分別為 “ apple”, “orange”, “cherry” </li></ul></ul></ul><ul><ul><li>$fruit = array(“a”=>“apple” , “o”=>“orange”, “c”=>“cherry”); </li></ul></ul><ul><ul><ul><li>fruit[“a”], fruit[“o”], fruit[“c”] 分別為“ apple”, “orange”, “cherry” </li></ul></ul></ul><ul><li>二維陣列宣告範例 </li></ul><ul><ul><li>$car = array(array(“Accord”, “Civic”, “CRV”), array(“Camry”, “Vios”, “RAV”)); </li></ul></ul><ul><ul><li>$honda = array(“Accord”, “Civic”, “CRV”); $toyota = array(“Camry”, “Vios”, “RAV”); $car = array($honda, $toyota); </li></ul></ul><ul><ul><li>$car[] = array(“Accord”, “Civic”, “CRV”); $car[] = array(“Camry”, “Vios”, “RAV”); </li></ul></ul><ul><ul><ul><li>$car[0][0], $car[0][1], $car[0][2] 分別為“ Accord”, “Civic”, “CRV” </li></ul></ul></ul><ul><ul><ul><li>$car[1][0], $car[1][1], $car[1][2] 分別為“ Camry”, “Vios”, “RAV” </li></ul></ul></ul>
  13. 13. 控制流程 - 邏輯判斷 <ul><li>if </li></ul><ul><ul><li>if ( 比較式 ) { 比較式成立時 執行此區段 ; } </li></ul></ul><ul><li>if … else </li></ul><ul><ul><li>if ( 比較式 ){ 執行區段 1; } else { 執行區段 2; } </li></ul></ul>
  14. 14. 控制流程 - 邏輯判斷 <ul><li>if … elseif … else </li></ul><ul><ul><li>if ( 比較式 1){ 執行區段 1 }elseif ( 比較式 2){ 執行區段 2 }else{ 執行區段 } </li></ul></ul><ul><li>switch </li></ul><ul><ul><li>switch( 變數 ) { case 比較值 : 執行區段 ; break; : default: 執行區段 ; break; } </li></ul></ul>
  15. 15. 控制流程 - 邏輯判斷範例 if($fruit == “apple”){ $myfruit = “ 蘋果” ; }elseif($fruit==“orange”){ $myfruit == “ 柳橙” ; }else{ $myfruit=“ 西瓜” ; } switch($fruit){ case &quot;apple&quot;: $myfruit = &quot; 蘋果 &quot;; break; case &quot;orange&quot;: $myfruit = &quot; 柳橙 &quot;; break; default: $myfruit = &quot; 西瓜 &quot;; } if($fruit == “apple”){ $myfruit = “ 蘋果” ; } if($fruit == “apple”){ $myfruit = “ 蘋果” ; }else{ $myfruit=“ 西瓜” ; }
  16. 16. 控制流程 – 迴圈結構 <ul><li>for 迴圈 </li></ul><ul><ul><li>for( 記數起始條件 ; 記數終止條件 ; 記數累進 ) { 執行區段 ; } </li></ul></ul><ul><li>while 迴圈 </li></ul><ul><ul><li>while( 判斷式 ){ 執行區段 ; } </li></ul></ul>echo &quot;<table>&quot;; for($row=1; $row<=9; $row++) { echo &quot;<tr>&quot;; for($col=1; $col<=9; $col++) { echo &quot;<td>&quot;.$row.&quot;x&quot;.$col. &quot;=&quot;.$row*$col.&quot;</td>&quot; ; } echo &quot;</tr>&quot;; } echo &quot;</table>&quot;; echo &quot;<table>&quot;; $row=1; while($row<=9){ echo &quot;<tr>&quot;; $col=1; while($col<=9){ echo &quot;<td>&quot;.$col.&quot;x&quot;.$row. &quot;=&quot;.$col*$row.&quot;</td>&quot; ; $col++; } echo &quot;</tr>&quot;; $row++; } echo &quot;</table>&quot;;
  17. 17. 控制流程 – 迴圈結構 <ul><li>do 迴圈 </li></ul><ul><ul><li>do{ 執行區段 ; } while( 判斷式 ); </li></ul></ul><ul><li>foreach 迴圈 </li></ul><ul><ul><li>foreach( 陣列 as 變數 ) { 執行區段 ; } </li></ul></ul><ul><li>break – 離開迴圈 </li></ul>echo &quot;<table>&quot;; $row=1; do{ echo &quot;<tr>&quot;; $col=1; do{ echo &quot;<td>&quot;.$col.&quot;x&quot;.$row. &quot;=&quot;.$col*$row.&quot;</td>&quot; ; $col++; }while($col<=9); echo &quot;</tr>&quot;; $row++; }while($row<=9); echo &quot;</table>&quot;; $sport = array( “ baseball”, ” basketball”, “ football”, “ hockey”); foreach($sport as $sport_item) echo $sport_item.&quot;<br>&quot;;
  18. 18. 子程式與函式 <ul><li>定義函式 (Function) </li></ul><ul><ul><li>定義語法 function 函數名 (){ … } </li></ul></ul><ul><ul><li>呼叫函數 函數名 (); </li></ul></ul><ul><li>參數 (Parameter) 傳遞 </li></ul><ul><ul><li>定義語法 function 含數名 ( 參數 1, 參數 2, …){ … } </li></ul></ul><ul><ul><li>呼叫函數 函數名 ( 變數 1, 變數 2, …) ; </li></ul></ul><ul><li>具傳回值函數 </li></ul><ul><ul><li>定義語法 function 函數名 ( 參數 , …) { … return 傳回值 ; } </li></ul></ul><ul><ul><li>呼叫函數 變數 = 函數名 ( 參數 , …) ; </li></ul></ul>$radius = 10.5; if ($radius != &quot;&quot;){ $area = area($radius) ; $circum = circum($radius) ; echo &quot;Area: $area<br>&quot; ; echo &quot;Circumference: $circum<br>&quot; ; }else{ error() ; } function area($r) { $a = pi()*$r*$r ; return $a ; } function circum($r) { $c = 2*pi()*$r ; return $c ; } function error() { echo &quot;Radius is missing...<br>&quot; ; }
  19. 19. PHP 常用函式庫 <ul><li>參考官方網站如下 </li></ul><ul><ul><li>http://tw2.php.net/manual/en/funcref.php </li></ul></ul><ul><li>與伺服器相關函式 </li></ul><ul><ul><li>擷取 Apache 伺服器資訊 (apache_...) </li></ul></ul><ul><li>處理陣列相關函式 </li></ul><ul><ul><li>處理陣列元素排序、重整、對應、…等等資料結構問題 </li></ul></ul><ul><li>數學函式 </li></ul><ul><ul><li>如三角函數、對數、次方計算、小數處理、亂數、極值、…等等 </li></ul></ul><ul><li>字串處理函式 </li></ul><ul><ul><li>過濾字串、字串分割與合併、字元置換、字元搜尋、字體轉型、字串比較…等等 </li></ul></ul><ul><li>檔案管理函式 </li></ul><ul><ul><li>檔案資料存取、檔案複製、檔案更名與刪除、…等等 </li></ul></ul>
  20. 20. PHP 常用函式庫 <ul><li>多媒體資料處理函式 </li></ul><ul><ul><li>影像讀取、串流處理、影像壓縮、…等等 </li></ul></ul><ul><li>檔案格式轉換與資料處理函式 </li></ul><ul><ul><li>PDF 、 CSV 、 DBF 、字串處理、數值型態判別、 ZIP 、 XML 、 XSLT 、編碼轉碼…等等與資料處理相關功能 </li></ul></ul><ul><li>資料庫函式 </li></ul><ul><ul><li>MySQL 、 SQL Server 、 Oracle 、 dBase 、 Infomix 、 Sybase 、 PostgreSQL… 等等 </li></ul></ul><ul><li>網路串流函式 </li></ul><ul><ul><li>Network 、 URL 、 RPC 、 SNMP 、 Socket 、 Session 、 HTTP 、 FTP 、 IRC 、 OpenSSL 、…等等 </li></ul></ul><ul><li>軟體外掛程式處理函式 </li></ul><ul><ul><li>Flash 、 ODBC 、 Lotus Notes 、…等等 </li></ul></ul><ul><li>電子郵件處理函式 </li></ul><ul><ul><li>Mail 、 imap/pop3/NNTP 、…等等 </li></ul></ul>
  21. 21. PHP 相關教學網站 <ul><li>http://member.ettoday.com/book/index.php.htm </li></ul><ul><li>http://php.igt.com.tw/ </li></ul><ul><li>http://www.php5.idv.tw/ </li></ul>
  22. 22. 檔案資料處理 <ul><li>開啟檔案 </li></ul><ul><ul><li>$f = fopen(“ 檔案位置” , ‘w | r | a | b | t | …’) </li></ul></ul><ul><ul><ul><li>‘ w’ : Writable ;‘ r’ : Readable ;‘ a’ : Appendable ;‘ b’ : Binary ;‘ t’ : Text </li></ul></ul></ul><ul><li>讀取檔案 </li></ul><ul><ul><li>讀取字元: fgetc($f) </li></ul></ul><ul><ul><li>讀取單行: fgets($f, 字元數 ), fgetcsv($f, 列數 , 分隔符號 ), fgetss() </li></ul></ul><ul><ul><li>讀取整個檔案: readfile( 檔案位置 ), file( 檔案位置 ), fpassthru($f), fread($f, 長度 )  長度 : 如 filesize($f) </li></ul></ul><ul><ul><li>倒轉至檔頭: rewind($f) </li></ul></ul><ul><ul><li>是否在檔尾: feof($f) </li></ul></ul><ul><li>寫入檔案 </li></ul><ul><ul><li>fwrite($f, “ 寫入字串” ) </li></ul></ul><ul><ul><li>Fputs($f,” 寫入字串” ) </li></ul></ul><ul><li>關閉檔案 </li></ul><ul><ul><li>fclose($f) </li></ul></ul>
  23. 23. 檔案管理 <ul><li>瀏覽檔案 </li></ul><ul><ul><li>檔案是否存在: file_exists(“ 檔案位置” ) </li></ul></ul><ul><ul><li>檢查檔案大小: filesize(“ 檔案位置” ) </li></ul></ul><ul><ul><li>複製檔案: copy(“ 來源路徑及檔名” , “ 目的路徑及檔名” ) </li></ul></ul><ul><ul><li>刪除檔案: unlink(“ 檔案路徑及檔名” ) </li></ul></ul><ul><ul><li>其他: is_file(), is_dir(), dirname(), fileatime()…, etc. </li></ul></ul><ul><li>上傳檔案 </li></ul><ul><ul><li>表單資料格式 (in html form) <form … enctype=“multipart/form-data”> <input type=“file” name=“ 檔案上傳變數 &quot;> </li></ul></ul><ul><ul><li>擷取檔案資訊 (in php) $_FILES[“ 檔案上傳變數” ][“ 檔案資訊參數” ] 檔案資訊參數- name :檔名; size :檔案大小; type :格式、 tmp_name :路徑;…等等 </li></ul></ul><ul><ul><li>將檔案複製到目的路徑 </li></ul></ul>
  24. 24. <?php $f = fopen(“test.txt”,&quot;r&quot;); $backup = “test.txt.bak&quot;; $fw = fopen($backup,&quot;w&quot;); while(!feof($f)){ $str = fgets($f); fwrite($fw,$str); echo $str.&quot;<br>&quot;; } fclose($f); fclose($fw); ?> if($dir=opendir(&quot;.&quot;)) {//current path while(($filename=readdir($dir)) != false){ $files[] = $filename; } sort($files); foreach($files as $file){ $att = &quot;-&quot;; if(is_readable($file)) $att .= &quot;r&quot;; else $att .= &quot;-&quot;; if(is_writeable($file)) $att .= &quot;w&quot;; else $att .= &quot;-&quot;; if(is_executable($file)) $att .= &quot;x&quot;; else $att .= &quot;-&quot;; $att .= &quot;-&quot;; echo filetype($file).“ “.$att.“ “. $file.“ “.filesize($file).“<br>&quot;; } echo &quot;total files: &quot;.count($files).&quot;<br>&quot;; closedir($dir); } 瀏覽檔案 檔案讀取與寫入 $time = getdate(fileatime($file)) ; $str = $time[year].&quot;-.$time[mon]. &quot;-&quot;.$time[mday].&quot; &quot;.$time[hours]. &quot;:&quot;.$time[minutes]. &quot;:&quot;.$time[seconds]; echo $str.&quot;<br>&quot;; 檔案存取時間格式轉換
  25. 25. <?php echo &quot;<br>The file name: &quot;.$_FILES['file']['name']; echo &quot;<br>The file size: &quot;.$_FILES['file']['size']; echo &quot;<br>The file type: &quot;.$_FILES['file']['type']; echo &quot;<br>The file path: &quot;.$_FILES['file']['tmp_name']; move_uploaded_file($_FILES['file']['tmp_name'],$_FILES['file']['name']) //copy($_FILES['file']['name'],&quot;./Upload/&quot;.$_FILES['file']['name']); //unlink($_FILES['file']['tmp_name']); ?> <form action=&quot;FileLoadTest.php&quot; method=&quot;post&quot; enctype=&quot;multipart/form-data&quot;> <p> 檔案欄位 <input type=&quot;file&quot; name=&quot;file&quot;> </p> <input type=&quot;submit&quot; value=&quot; 送出 &quot;> <input type=&quot;reset&quot; value=&quot; 重設 &quot;> </form> 客戶端 伺服器端 上傳檔案 範例
  26. 26. 連線資訊處理 <ul><li>伺服器資訊 </li></ul><ul><ul><li>_SERVER[“ 伺服器參數” ] </li></ul></ul><ul><ul><ul><li>伺服器參數可取得本機或遠端登錄位址等相關資訊,例如 </li></ul></ul></ul><ul><ul><ul><li>REMOTE_ADDR 、 SERVER_NAME 、 SERVER_PORT 、 DOCUMENT_ROOT 、 HTTP_HOST 、 PHP_SELF 、… etc. </li></ul></ul></ul><ul><li>Session 概念 </li></ul><ul><ul><li>session_start() 、 session_destroy()  啟動或停止 session </li></ul></ul><ul><ul><li>session_register(“ 物件名稱” )  註冊 session </li></ul></ul><ul><ul><li>session_unregister(“ 物件名稱” ) 、 session_unset(“ 物件名稱” )  取消註冊或刪除物件 </li></ul></ul><ul><ul><li>_SESSION[“ 物件名稱” ] = 物件資料 </li></ul></ul><ul><ul><ul><li>物件資料可為數值、陣列、字串資料等物件 </li></ul></ul></ul><ul><ul><ul><li>當連線未停止時, session 內資料便一直存在 </li></ul></ul></ul><ul><ul><li>早期 session 的觀念未開發出來時,使用 Cookie 來記錄連線資料,但有限制; session 或 cookie 皆可應用在瀏覽計數器及網頁資料傳遞上; session_start() 之前不可有印出資料動作 </li></ul></ul><ul><li>網頁重導 (Redirect) 與重載 (Refresh) </li></ul><ul><ul><li>header(“Location: 網頁或網址” )  重導前後不可印出資料 </li></ul></ul><ul><ul><li>header(“Refresh: 秒數” )  重載前後不可印出資料 </li></ul></ul>
  27. 27. <?php $username = $_POST[&quot;username&quot;]; $password = $_POST[&quot;password&quot;]; session_start(); session_register(&quot;count&quot;); session_register(&quot;uplog&quot;); if ($username != “”){// 製作計數器 if(isset($_SESSION[&quot;count&quot;])) $_SESSION[&quot;count&quot;]++; else $_SESSION[&quot;count&quot;]=0; $_SESSION[&quot;uplog&quot;] = array($username, $password); header(&quot;Location: showpage.php&quot;); }else{ session_unset(); session_destroy(); header(&quot;Location: error.html&quot;); exit; } ?> <form action=&quot;LoginCheck.php&quot; method=&quot;post&quot;> User:<input type=&quot;text&quot; name=&quot;username&quot;> Pass:<input type=&quot;password&quot; name=&quot;password&quot;> <input type=&quot;submit&quot; value=&quot; 送出 &quot;> <input type=&quot;reset&quot; value=&quot; 重設 &quot;></form> <?php session_start(); $_SESSION[&quot;count&quot;]++; echo &quot;<p>session count: &quot;. $_SESSION[&quot;count&quot;].&quot;<br>&quot; ; foreach($_SESSION[&quot;uplog&quot;] as $uplog) echo $uplog.&quot;<br>&quot;; ?> <html> <body> <h2> Please enter username and password! </h2> </body> </html> 驗證成功 ( 委派 ) 驗證失敗 ( 重導 ) 驗證資料  頁面不顯示 錯誤頁面 呈現頁面 資料 輸入頁
  28. 28. 物件導向概念 <ul><li>類別 (class) 的架構 </li></ul><ul><ul><li>定義 </li></ul></ul><ul><ul><ul><li>class class_name { … } </li></ul></ul></ul><ul><ul><li>建構子 (constructor) </li></ul></ul><ul><ul><ul><li>function class_name([ 引數 ]) {  建構子與類別同名 …  一般在建構子中定義全域變數的初始值 } </li></ul></ul></ul><ul><ul><li>變數 (variable) </li></ul></ul><ul><ul><ul><li>var $variable_name ; </li></ul></ul></ul><ul><ul><li>方法 (method)  分為有傳回值和沒有傳回值兩種 </li></ul></ul><ul><ul><ul><li>function method_name([ 引數 ]) { [return $variable_name;] } </li></ul></ul></ul><ul><ul><ul><li>$this->variable_name  利用 this 定義類別內與引數同名之變數 </li></ul></ul></ul><ul><ul><li>public 與 private ( 可取代 var) </li></ul></ul><ul><ul><ul><li>public :宣告該變數或方法可公開呼叫使用,此為類別之預設型態 </li></ul></ul></ul><ul><ul><ul><li>private :宣告該變數或方法只能在類別內彼此呼叫使用 </li></ul></ul></ul>
  29. 29. 物件導向概念 <ul><li>繼承 (inheritance) </li></ul><ul><ul><li>Class B 繼承 Class A ,則 Class B 將自動擁有 Class A 所有的方法 </li></ul></ul><ul><ul><ul><li>class classB_name extends classA_name { … } </li></ul></ul></ul><ul><ul><ul><li>protected :宣告該變數或方法可在相互繼承的類別中呼叫使用 </li></ul></ul></ul><ul><ul><ul><li>final :宣告該變數不可被繼承或置換 </li></ul></ul></ul><ul><li>多形 (Polymorphism) </li></ul><ul><ul><li>覆寫 (Override) : Class B 繼承 Class A 後,如果定義了重複名稱但資料型態不同的方法,則此方法自動取代 Class A 中的方法 </li></ul></ul><ul><li>覆載 (Overload) </li></ul><ul><ul><li>建構子及方法允許在相同名稱下輸入不同的引數 </li></ul></ul><ul><ul><li>註:目前的 PHP 尚未支援此功能 </li></ul></ul>
  30. 30. class CarModel { private $color; protected $model; function CarModel($color=NULL, $model=NULL) { $this->color = $color; $this->model = $model; } public function setColor($color) { $this->color = $color; } public function setModel($model) { $this->model = $model; } public function getColor() { return $this->color; } public function getModel() { return $this->model; } } class CarDealer extends CarModel { private $price; private $discount; function CarDealer($discount=NULL) { $this->discount = $discount; } public function setDiscount($discount) { $this->discount = $discount; } public function setModel() { if($this->discount < 0.9) { $this->model = &quot;NISSAN&quot;; } } public function getPrice() { if($this->model == &quot;NISSAN&quot;) $this->price = 700000 ; else $this->price = 800000 * $this->discount ; return $this->price ; } } <?php // 測試 CarModel 類別 $myCar = new CarModel() ; $myCar->setColor(&quot;red&quot;) ; $myCar->setModel(&quot;HONDA-CRV&quot;) ; echo $myCar->getModel().&quot; with color &quot;.$myCar->getColor().&quot;<br>&quot; ; // 測試 CarDealer 類別 $yourCar = new CarDealer(0.6) ; $yourCar->setColor(&quot;white&quot;); $yourCar->setModel(&quot;TOYOTA-RAV&quot;); $yourCar->setModel(); echo $yourCar->getModel().&quot; with color &quot;.$yourCar->getColor().&quot;<br>&quot;; echo &quot;Estimated Price: &quot;.$yourCar->getPrice(); class CarModel { … } class CarDelar { … } ?> 執行結果 HONDA-CRV with color red NISSAN-SENTRA with color white Estimated Price: 700000 Parent Class Derived Class
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×