PHP part1 - 國立清華大學資訊工程系

Download Report

Transcript PHP part1 - 國立清華大學資訊工程系

Introduction to PHP
靜態網頁
• Step 1:Client 透過Internet 向Web Server 提
出瀏覽某個HTML 檔案的需求。
• Step 2:若Web Server 上有該網頁的話,便
將其內容回傳給Client。
動態網頁
• Step 1:Client 透過Internet 向Web Server 提出瀏覽
某個PHP 檔案的需求。
• Step 2:Web Server 會先將其內容轉給PHP解譯程式
處理。
• Step 3:處理過程中,可搭配Database 共同作業
(讀取/寫入資料)。
• Step 4:然後再將處理過的內容回傳給Web Server。
• Step 5:Web Server再將其回傳給Client。
什麼是PHP?
• PHP原名為Personal Home Page,PHP3之後
改名為Hypertext Preprocessor 。
• PHP可嵌入HTML之中,彌補純HTML 碼無法
進行運算處理的缺憾,為目前廣泛運用在
網頁程式撰寫的語言之ㄧ。
• 語法結構和C/C++、Java等語法相似。
什麼是PHP?
• *.html 的網頁會被Web Server 直接送出;*.
php的網頁會先經PHP解譯程式處理後再送
出。
• 即使網頁含有PHP 程式碼,經處理之後輸出
到使用者的頁面也只會只剩下HTML 碼;原
始內容可以受到保護(不被竊取),使用
者也無須安裝PHP軟體。
• 任何的*.php檔皆是透過Server端的php.exe
來解譯程式碼。
HTML語法
HTML語法
初探PHP
• PHP開頭範圍標籤
<?php PHP語法 ?>
<? PHP語法 ?>
• 副檔名必為.php
將php語法寫在
php標籤裡, 如此
一來, php.exe就知
道要處理這段程式
<html>
<head>
<title>Example</title>
</head>
<body>
<?php
echo "Hi, I'm a PHP script!";
?>
</body>
</html>
經過php.exe的
處理後, 會產生
給client的網頁
符合HTML語法
<html>
<head>
<title>Example</title>
</head>
<body>
Hi, I'm a PHP script!
</body>
</html>
初探PHP
• 註解方式
/*註解*/
//註解
• PHP語法不一定要寫在HTML語法中,可以
在上面、下面、獨立一份文件。
• 一個程式敘述結束時要有;
PHP變數與資料型態
• PHP主要有以下四種變數類型:
– 整數(integer)
– 浮點數(float)
– 布林(boolean)
– 字串(string)
• 定義變數的方式是變數名稱前面加個$即可
使用。
• 變數名稱格式必須以英文字母或底線作為
開頭。
• 變數有分大小寫
PHP變數與資料型態
PHP變數與資料型態
• 使用PHP變數不需預先宣告變數及資料型態。
• 給予變數值後,PHP會依照所給定的值自動
定義型態
PHP變數與資料型態
• 變數的運算
簡單練習PHP變數
PHP原始碼
<?php
$pi=3.14;
$area=$pi*5*5; //計算半徑為5的圓面積
echo "半徑為5的圓面積為$area<br>"
?>
傳回來的html原始碼
半徑為5的圓面積為78.5<br>
顯示的結果為
PHP流程控制
PHP原始碼
• if(條件1) {
條件1成立便執行此段程式;
}
elseif(條件2) {
條件2成立便執行此段程式;
}
else {
以上條件皆不成立則執行此段程式;
}
<?php
$a=0;
if($a>10){
echo "if";
}
elseif($a==10){
echo "elseif";
}
else{
echo "else";
}
?>
在瀏覽器顯示
else
PHP流程控制
• while(條件) {
條件成立便一直重複執行此段程式;直到條件不成
立為止;
}
在瀏覽器顯示
PHP原始碼
<?php
$a=0;
while($a<10){
echo "$a<br>";
$a++;
}
?>
0
1
2
3
4
5
6
7
8
9
PHP流程控制
• for(初始值; 條件; 間隔) {
當條件成立便執行此段程式;直到條件不成立為止;
}
在瀏覽器顯示
PHP原始碼
<?php
for($a=0;$a<10;$a++){
echo "$a<br>";
}
?>
0
1
2
3
4
5
6
7
8
9
PHP流程控制
• switch(條件) {
case 條件1:
若條件等於條件1則執行此段程式;
break;
case 條件2:
若條件等於條件2
則執行此段程式;
break;
default:
若無相同條件則執行此段程式;
break;
}
PHP原始碼
<?php
$a=0;
switch($a){
case 0:
echo "0";
break;
case 1:
echo "1";
break;
default:
echo "x";
break;
}
?>
瀏覽器顯示
0
傳遞資料
• 現在的網頁不單單只是單向的顯示網頁給使
用者端, 更可以和使用者作互動
– Ex: Google搜尋引擎
• 因此需要製作一個使用者介面讓使用者可以
輸入的動作
– 使用HTML來設計一個輸入的介面
• 表單(Form)
• Web server必須也要有個相對應的程式可以
處理使用者輸入的資料, 並給予適當的回應
表單(Form)
• 先定義出一個表單, 在表單裡面可以有很多輸入欄位
– 文字欄位(Text), 密碼欄位(Password), 單一選擇鈕(Radio), 多
重選擇鈕(Check Box), 文字區塊:可輸入大量文字(Text Area)
• 會一次將一個表單裡面所有的輸入欄位送給web
server
表單(Form)
• 表單的傳送方式有GET和POST
– GET:最大長度為255 ,會於網址尾端加上?變
數名稱1=值&變數名稱2=值…。
http;//localhost/get.php?a=1&b=2
– POST:所傳訊息不會顯示,資料長度無限制。
當資料傳送到
(伺服器的php還是會設定一限制) server後,
由哪個
選擇要使用
GET或POST方
式傳送資料
php程式來處理
這些資料
使用KompoZer製作表單
先定義出一
個表單
定義表單
幫這個表單取
個名字
使用哪個php
來處理資料
選擇用GET或
者是POST來傳
送資料, 在這裡
先選GET
定義表單欄位
Text Area可
提供大量文
字輸入, 如:
留言板
按下
Submit
Button
就會把
資料送
出
常用的表單欄位都在Form Field裡
Text欄位
虛線範圍內即代表
表單的內容範圍
欄位的
名稱最
好使用
英文
將姓名的Text欄位取名
為name, 之後傳送給
server, name=John (假設
輸入名字為John)
Check Box欄位
如果勾選是本系學生, 送給
server的資料為check=on
Radio Button欄位
因為Radio Button只能
選擇其中一個, 所以他
是一個Group具有多
個選項, 所以同屬一個
Group必須使用相同
的Group Name
如果選擇性別為
男, 則送出的資
料為sex=boy
Text Area欄位
Text Area可讓使用
者輸入大量文字
定義Text Are的大小
假設在TextArea輸入
Hello World, 則送給
server的資料為
Message=Hello+World
Submit Button欄位
按下Submit Button即
代表將表單資料送出
Field Value的值
會被顯示在
button上
• 更詳細的網頁製作
送出的資料為
http://pads8.cs.nthu.edu.tw:8000/get.php?k
ey=John&check=on&sex=boy&Message=Hell
o+World&submit=submit
PHP程式如何處理GET的資料
• 使用GET傳到PHP的變數會存在一個名為
$_GET的變數中,而這一個變數是一個陣列
– http;//localhost/get.php?a=1&b=2則用$_GET[‘a’];
$_GET[‘b’]; 來接收資料
範例
使用PHP程式來處理資料
使用GET送出的資料
<?php
$name=$_GET['name'];
$sex=$_GET['sex'];
$check=$_GET['check'];
echo $name;
echo "性別是$sex<br>";
if (strcmp("on",$check)==0){
echo "就讀本系";
}
else{
echo "不是本系學生";
}
http://pads8.cs.nthu.edu.tw:8000/get.php?k
ey=John&check=on&sex=boy&Message=Hell
o+World&submit=submit
和PHP的String變數有關的function
?>
今日練習
• 製作披薩訂單網頁
– 假設店裡只有三種披薩, 且一個訂單只能選擇其
中一種披薩
– 如果訂購金額超過400元, 則不需外送費用; 若沒
超過400, 需加收外送費用50元
– 請印出顧客此次消費的總金額
Reference
• PHP5網管實驗室
– http://www.php5.idv.tw/html.php?mod=article&act=i
ndex&cid=3
• CGI程式入門
– http://ind.ntou.edu.tw/~dada/cgi/CGIprog.htm
• “PHP入門教學”, Little Chen, 虎尾科技大學資訊
工程系
– http://www.csie.nfu.edu.tw/phpBB2/download.php?i
d=1732&sid=2831850096e414beadd50967981c2536
• PHP程式設計講義
– http://km.tceb.edu.tw/~wsx/php/index.htm