| 課程102:PHP基礎入門。 |
摘要:
在這個課程中簡單介紹PHP程式設計的基礎。 |
PHP程式語言基本注意事項:
|
| 一、Web Server 如何分辨PHP的檔案與HTML檔案: |
要讓Web Server 能執行文件中的PHP程式碼,文件的副檔名,必須是 .php或 .phtml。如果要使用其他檔名,請參考各Web
Server的設定。
|
| 二、程式碼區域的開始與結束: |
PHP的優點之一,就是可以和HTML碼混合在一起。但是為了讓Web Server能區分出 PHP的程式碼與HTML碼,所以,在每段PHP程式碼的開頭必須加入<?php,在結尾的地方加
?>。
|
| 三、命令句: |
在PHP中,每一個命令句必須以分號;作結束。
|
| 四、變數: |
變數是用來儲存程式執行時的暫存資料。在PHP中,變數之前必需加 $
的符號。另外,PHP的大小寫是有差別的,所以在使用變數時,須注意大小寫是否一致。PHP是屬於 weakly typed的程式語言,對資料型態的規範較鬆,可以不先經宣告變數,就可以直接使用。好處是,程式寫起來比較方便,壞處是,程式出問題時,比較難找出錯誤。
|
五、程式註解: |
PHP的程式註解符號,與C++,Java一樣,單行的註解使用 //。//
之後同一行所有的文字,在執行時都會被乎略。若要使用多行的註解時,可以使用 /*
和 */的註解符號。自/*開始到*/之間的所有文字,在執行時都會被乎略。
|
PHP 的輸出:
|
| 一、echo 與 print的使用: |
要列印輸出程式的運算結果時,可以使用echo(PHP的語言結構)或 print(函數)。以下以實例分別示範echo和 print的用法。理論上,使用echo會比print略有效率。
|
| 二、echo.php: |
使用 echo 輸出: <br>
這裡的文字, Web Server不會作任何處理, 直接輸出<hr>
<?
echo("有括弧的<br>");
echo "沒括弧的<hr>";
$today = date("Y年m月d日"); //把呼叫 date函數所得的值, 設定給
$today變數
echo <<<END
這鍋使用 "here document" 語法來輸出"一狗票"文字, <br>
所有用 here document的方式輸出的文字, <br>
都可以完整的保留下來, <br>
變數在這裡"也"可以被替換, <br>
今天: $today<br>
END;
?>
<hr>上面的文字, 是執行過PHP程式所得的輸出結果<br>
這裡的文字, Web Server不會作任何處理, 直接輸出<hr>
以下輸出的結果是 <?php echo $today ?> 的簡寫方式<br>
<?=$today?>
<hr> |
|
| 三、print.php: |
使用 print 輸出: <br>
這裡的文字, Web Server不會作任何處理, 直接輸出<hr>
<?
print("有括弧的<br>");
print "沒括弧的<hr>";
$today = date("Y年m月d日"); //把呼叫 date函數所得的值, 設定給
$today變數
print <<<END
這鍋使用 "here document" 語法來輸出"一狗票"文字, <br>
所有用 here document的方式輸出的文字, <br>
都可以完整的保留下來, <br>
變數在這裡"也"可以被替換, <br>
今天: $today<br>
END;
?>
<hr>上面的文字, 是執行過PHP程式所得的輸出結果<br>
這裡的文字, Web Server不會作任何處理, 直接輸出<hr>
以下輸出的結果是 <?php print $today ?> 的簡寫方式<br>
<?=$today?>
<hr> |
|
Web的表單處理:
|
| 以上我們學到的是,使用PHP來輸出程式運算的結果。接下來我們要學習如何,處理表單所傳遞過來的資料。 |
| 一、102_form1.php: |
<html> <FORM METHOD=POST ACTION=""> 帳號: <INPUT TYPE="text" NAME="account"><BR> 密碼: <INPUT TYPE="text" NAME="password"><BR> <INPUT TYPE="submit" value="送出"> </FORM> <HR>
你輸入的帳號: <?=$_POST[account]?> <BR>
你輸入的姓名: <?=$_POST[password]?>
<HR>
</html> |
|
| 程式說明: |
在102_form1.php中,我們使用簡寫的方式,把PHP碼內嵌到HTML碼中。
表單所傳遞過來的資料,會按照HTML表單物件的名稱,成為PHP可以讀取的變數。如 :<INPUT TYPE="text"
NAME="account"> 這個文字欄位,NAME屬性的值是account。所以,要讀取這個欄位的值,只要使用$account這個變數即可。
|
| 練習題: |
- 把 102_form1.php存成 102_form2.php,中的 Form Method=Post 改為 Form
Method=Get,並觀察網址列的變化。
- 在瀏覽器中輸入http://www.igt.com.tw/~lib13/102_form1.php?account=abc&password=567,並觀察網頁輸出的結果。
- 在瀏覽器中輸入http://www.igt.com.tw/~lib13/102_form2.php?account=efg&password=987,並觀察網頁輸出的結果。
|
| 二、使用 if-elseif-else的結構: |
| 1. 102_login.html |
<html> <FORM METHOD=POST ACTION="102_auth.php"> 帳號: <INPUT TYPE="text" NAME="account"><BR> 密碼: <INPUT TYPE="text" NAME="password"><BR> <INPUT TYPE="submit" value="送出"> </FORM> </html> |
|
| 2. 102_auth.php |
<?php if($account == "lord" && $password == "pass"){ echo "歡迎 $_POST[account], 你的密碼是 $_POST[password]"; }elseif($_POST[account] == "god" && $_POST[password] == "dog"){ $y = date("Y") - 1911; $m = date("m"); $d = date("d"); echo "歡迎 $_POST[account], 今天是民國".$y."年".$m."月".$d."日"; }else{ echo "登入失敗:<hr> 輸入的資料:<br>帳號: $_POST[account] <br>密碼: $_POST[password]"; } ?> |
|
| 三、簡單的數學運算: |
| 1. 102_rect.html |
<html> <FORM METHOD=POST ACTION="102_rect.php"> 高: <INPUT TYPE="text" NAME="h"><BR> 寬: <INPUT TYPE="text" NAME="w"><BR> <INPUT TYPE="submit" value="送出"> </FORM> </html> |
|
| 2. 102_rect.php |
<?php $area = $_POST[w] * $_POST[h]; $para = 2 * ($_POST[w] + $_POST[h]);
echo <<<END
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html;
charset=big5">
</head>
<body>
<table width="61" border="0">
<tr>
<td width="36">高</td>
<td width="15">$_POST[h]</td>
</tr>
<tr>
<td>寬</td>
<td>$_POST[w]</td>
</tr>
<tr>
<td>面積</td>
<td>$area</td>
</tr>
<tr>
<td>周長</td>
<td>$para</td>
</tr>
</table>
</body>
</html>
END;
?> |
|
| 四、簡單的比較運算: |
1. 102_comp.html |
<html> <FORM METHOD=POST ACTION="102_comp.php"> n1: <INPUT TYPE="text" NAME="n1"><BR> n2: <INPUT TYPE="text" NAME="n2"><BR> <INPUT TYPE="submit" value="送出"> </FORM> </html> |
|
| 2. 102_comp.php |
<?php if($_POST[n1] > $_POST[n2]){ $result = "$_POST[n1] 大於 $_POST[n2]"; }elseif($_POST[n1] < $_POST[n2]){ $result = "$_POST[n1] 小於 $_POST[n2]"; }else{ $result = "$_POST[n1] 等於 $_POST[n2]"; }
echo <<<END
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html;
charset=big5">
</head>
<body>
<table border="0">
<tr>
<td width="36">n1</td>
<td width="15">$_POST[n1]</td>
</tr>
<tr>
<td>n2</td>
<td>$_POST[n2]</td>
</tr>
<tr>
<td>結果</td>
<td>$result</td>
</tr>
</table>
</body>
</html>
END;
?> |
|
| |
習題:
|
| 1. 寫一個PHP程式, 讓網友輸入, 圓的半徑, 然後輸出周長及面積 (解答) |
| 2. 寫一個PHP程式, 讓網友輸入, 三角形的三個邊, 然後輸出三角型的周長, 須判斷此三個值是否可構成三角形 (解答) |
3. 修改102_rect.php, 使用這個圖檔 讓輸出的結果,
可以顯示圖形 (解答) |