什麼是 PHP 呢?我們拿 Wiki 上面的說明來看看:(https://zh.wikipedia.org/wiki/PHP)
也就是說,PHP 是一種網頁程式語言,是一種直譯式的程式語言,無須再次編譯,即可在伺服器端進行程式的運作。很多在網站上面的程式都是透過 PHP 來撰寫的, 例如架站機 Xoops、討論區 phpBB、部落格軟體 lifetype 等等,都是透過 PHP 所撰寫出來的搭配資料庫即可運作的套裝軟體喔!
那 PHP 怎麼用呢?在 HTML 檔案裡面要使用到某些標籤就得透過
<?php echo "hello world"; ?>
此外,要特別注意的地方是,你再也無法複製別人的檔案了!『這是因為 PHP 是寫給伺服器運作時看的,所以伺服器會根據 PHP 程式碼的運作結果, 將結果以純文字的方式傳輸到瀏覽器上,因此瀏覽器顯示的只會是執行的結果,而不會是程式碼!』 !這點非常重要!
另外,伺服器能不能執行 PHP 程式碼,與伺服器有沒有安裝支援 PHP 的網頁伺服器軟體有關,不是所有的網頁伺服器都會支援 PHP 的喔! 我們上課練習用的伺服器是支援 PHP 的,只是要讓伺服器執行 PHP 你還需要知道:
什麼是XAMPP??,根據Wiki上的說明:(https://zh.wikipedia.org/zh-tw/XAMPP)
然後按照指示按 "Next"
上面要安裝的工具直接用預設全部安裝
安裝路徑也是預設在"C槽的xampp"
語言預設英文(好像也沒中文可以選)
將方框的勾勾拿掉
繼續按"Next"
等待安裝......
中間方框不拿掉,按下Finish後幫我開啟XAMPP控制台
將"Apache"和"MySQL"的Start按下去啟用
測試Apache有沒有成功
網頁伺服器都會有預設網頁的檔案要放置的路徑,XAMPP預設的路徑是在C:\xampp\htdocs,意思就是說在瀏覽器上輸入http://localhost時,XAMPP會到C:\xampp\htdocs底下讀取網頁的檔案,但如果我們不想把網頁的檔案放在預設路徑上,想放到自己習慣的資料夾上,那就必須到XAMPP的設定檔做修改。
到C槽的xampp資料夾 -> 進到apache資料夾 -> 再進到 conf資料夾裡,找到httpd.conf的檔案


DocumentRoot "C:/xampp/htdocs" <Directory "C:/xampp/htdocs">像下方圖片這樣:

這兩行的 C:/xampp/htdocs 就是XAMPP的網頁預設路徑, 我們可以將這兩行的 C:/xampp/htdocs 改成我們自己想要的路徑資料夾。
我想要將網頁預設路徑放在C槽底下的www的資料夾裡,那我就把這兩行的C:/xampp/htdocs 改成C:/www 。
像下方這樣:
修改完就可以儲存關掉
再到C槽新增一個 www的資料夾(!!! 這一步記得要做,不然重新啟動Apache會有問題 !!!)
然後到XAMPP的控制台,將Apache和MySQL重新啟動
重新啟動方法,只要按Apache和MySQL的"Stop"按鈕變成"Start"後,再按一次"Start"按鈕就可以
既然首頁及資料夾都已經有了,那之後做的所有網頁都要放在www的資料夾裡面,並且在首頁放上連結可以直接點了就直接跳過去。
什麼意思呢? 像這樣:
當我在首頁點選連結時,會有跳頁展示的效果,方法就是用前幾章講HTML時有提到的 <a href=""> </a>的方法。
當我們的電腦重新開機時會將一些服務關閉,每次只要重新啟動電腦時都要在自己手動將服務在開起來其實有點麻煩,所以我們將XAMPP裡的Apache和Mysql設定成自動啟動,只要當電腦重新啟動時XAMPP會自動將Apache和Mysql自動開起來,這樣就可以不用手動開啟了。
如果直接用左鍵點開XAMPP系統只會以一般使用者的身分打開XAMPP,這樣會無法設定自動啟動,所以我們要用管理員的身分打開XAMMPP才能設定開機自動啟用。
打開後可以看到XAMPP控制面板左邊的Service那直排框框會出現紅色叉叉,那就是我們要修改的地方,如果框框內是顯示 紅色叉叉 代表就是不會自動啟動。

點選Apache和Mysql的紅色叉叉,點選後會出現確認窗選擇yes,之後方框就會變成綠色勾勾這樣就可以了。
Service變成綠色勾勾後記得 點Apache和Mysql的Start按鈕將他們開啟。像圖片這樣:


上面有提到PHP是需要在伺服器安裝相關軟體才可以使用,上面做的那些動作就是要將我們現在的電腦變成簡易的網頁伺服器,XAMPP本身就已經有包含PHP的相關軟體,所以我們現在就可以開始寫php網頁囉。
!!!記得上面有提到PHP網頁的副檔名是.php不是.html,不然是沒辦法寫php喔。!!!
在你完成這個網頁之後,請直接右鍵查看一下原始碼,看看能不能看到剛剛寫的 PHP 程式碼呢?
變數設定是一個很重要的工具!你可以固定程式碼,程式碼裡面含有變數,那麼在不更動程式碼的原則, 只要設定新的變數,那就會得到不同的結果。PHP 的變數設定基本規則是這樣的:
設計網頁或程式時,我們一直強調,要將『一直出現的部份獨立出來,或者是製作成為變數』,這樣在未來的維護上面會比較輕鬆。
從上面的練習可以發現到,你只要設定好變數,後面的文字內容部份就會全部跟著變動,而不用一個一個資料去重新修改, 這就是變數設定的目的之一。
另外,文字的累加與四則運作是不太一樣的喔!
以下面這題為例:
PHP 有個迴圈的功能是很有幫助的,語法是這樣的:
<?php
for ( $i = 1; $i <= 10; $i++ ) {
echo $i ;
}
?>
直接帶入 PHP 網頁時,就會輸出 1 ~ 10 的數字。我們來使用網頁安全色,那就是:
以 51 為倍數,最多為 5 倍,就可以得到所有的網頁色彩,因此總共就會有 6*6*6=216 種顏色搭配。如果要將這些顏色一個一個寫入網頁上, 用以前的手動設定方式,應該會崩潰的。此時,我們可以透過三個迴圈功能,讓每個迴圈從 0~5 搭配,然後每次都乘上 51 這個數值, 這樣就能夠直接輸出 216 種顏色喔!基本上有點像這樣:
<?php
for ( $i = 0; $i <= 5; $i++ ) {
for ( $j = 0; $j <= 5; $j++ ) {
for ( $k = 0; $k <= 5; $k++ ) {
echo "rgb(" . $i*51 . "," . $j*51 . "," . $k*51 . ")" ;
}
}
}
?>




上面的作法當中,框框內的文字最好使用對比色來處理,不然黑壓壓一片,某些顏色就看不到文字了!那對比色怎麼處理呢?其實對比色就是 R, G, B 的顏色, 都用 255 去減,就會得到對比色。例如 rgb(0,0,255) 的對比色就會是 rgb(255,255,0)。同樣的,讓我們使用上述的檔案來重新建立一個新的具有對比色文字的表格。
比較需要注意的是,如果有兩個以上的運算子,建議使用括號來將數值圈起來,例如 (255-$i*51) 這樣,可以避免比較多的錯誤狀況的發生喔。
我們有時候會需要 Server 提供目前 Server 的日期~要注意,用戶端可能來自於不同的地方,所以 Server / client 由於處於地球的兩個地方, 很可能具有不一樣的時間參數。PHP 取得的時間是 Server 的時間,而 javascript 則取得的是 client 的時間,這是有所差異的。那麼 PHP 的日期參數是什麼呢? 基本上,取得日期使用的是 date 這個函數,而這個函數可以輸出不同的格式,例如想要輸出台灣常見的 2017/11/28 日,可以使用如下的方式來呼叫:
<?php
echo "今天的日期是:" . date("Y/m/d") . "<br />";
?>
在 date 裡面還有常用的參數有:
取得時間後,能不能依據時間給予早安、午安、晚安、快去睡覺的對話顯示框呢?這就需要 PHP 的條件判斷了!基本條件判斷是這樣的:
<?php
if ( 條件判斷 ) {
條件成立情況下所進行的程式碼;
}
?>
如果條件成立就進行 A 動作,若不成立就進行 B 動作,那就會將上面的程式變成如下模樣:
<?php
if ( 條件判斷 ) {
條件成立情況下所進行的程式碼 A;
} else {
條件不成立情況下所進行的程式碼 B;
}
?>
如果將上面的程式碼以人類看得懂的中文字來說明,那就會變成:
<?php 如果 ( 條件判斷成立 ) 我就 條件成立情況下所進行的程式碼 A; 要不然我就 條件不成立情況下所進行的程式碼 B; 結束 ?>
如果有涉及到多重判斷,那就得要使用底下更複雜的語法了:
<?php
if ( 第一個條件判斷 ) {
第一個條件成立情況下所進行的程式碼 A;
} elseif ( 第二個條件判斷) {
第二個條件成立情況下所進行的程式碼 B;
} elseif ( 第三個條件判斷) {
第三個條件成立情況下所進行的程式碼 C;
} else {
所有條件都不成立情況下所進行的程式碼 D;
}
?>
常見的條件判斷中,也有底下幾種比對的方式喔!
<?php if ( $abc == $cde ) // 判斷兩個變數是否相同 if ( $abc > $cde ) // 比對兩個數值變數的大小 if ( isset ( $abc ) ) // 判斷 $abc 這個變數是否存在於程式當中 if ( 條件判斷一 && 條件判斷二 ) 兩個條件都成立才算成立 (and) if ( 條件判斷一 || 條件判斷二 ) 兩個條件當中,只要任何一個成立就算成立 (or) ?>
某些時刻,我們的語法是會被重複呼叫的!例如上面的問候語,你可能會想要在某些場合重複的使用上述的語法。那麼是否需要將全部的語法通通寫一遍在不同的網頁中? 似乎不需要吧!我們可以將可共用的程式碼獨立出來放在某些檔案彙整中,例如常見的 function.php 檔案的檔名,通常就放了很多的可以共享共用的函式或語法。 又例如我們在網頁當中瘋狂重複載入的 overall.css 也是同樣的想法。
那我們知道 CSS 的載入可以在 head 位置上使用『<link href="/where/to/find/your/style.css" rel="stylesheet" />』來載入, 那麼 php 該如何載入外部的檔案呢?那就使用 include ('filename') 吧!
同學可以透過這個練習知道 PHP 是可以去呼叫外部的檔案的!如此一來未來很多檔案就可以共用程式碼了!當你的 function.php 裡面的資料更新時, 所有呼叫該檔案的網頁就會跟著變動與更新!維護上就會變得很方便。
除了直接呼叫程式碼之外,我們也能夠透過自訂的函數去處理動作!函數簡單的說,就是一個特別的指令,這個指令可以完成許多複雜的任務。 製作 PHP 的函數很簡單,使用底下的語法即可:
<?php
function yourfunctionname() {
your code here..;
your code here..;
}
yourfunctionname(); <==這裡執行上述的指令串
?>
只是函數與正常的程式碼不一樣,在函數中的很多變數與資料是沒辦法回傳給主程式的~此時,我們可能還需要透過一個所謂的 return 功能, 讓函數有個回傳值~這樣才知道函數執行的結果這樣。
雖然執行結果相同的,但是這才是比較正確的作法!透過函數去處理某些任務,或者是透過函數去取得某些變數內容, 要比直接匯入固定程式碼來的有效率喔!處理上也比較直覺~
網頁有時候網址列會是長這樣:『 http://remote.host.name/somefile.php?var=content 』,亦即是在檔名後面, 先加上問號之後,以變數設定的方式,指定變數與變數值。這就是使用 GET 的方式,透過網址,將使用者需要的資料丟到伺服器, 再由伺服器的 PHP 去抓下來處理。
要將變數資料從網址列抓下來,就得要使用一些比較特別的方法。以 GET 的方式來說,就得要這樣做:
$phpvar = $_GET['變數名稱'];
那個 $phpvar 是 PHP 裡面再設定一個變數名稱。我們同樣以賽道資訊來說明一下,假設操場的賽道標準長度為 400, 300, 200 這三種, 我想要透過設定一個 mybaic 變數,且透過網址列直接傳輸時,就得要透過上述的 $_GET['mybasic'] 來將變數內容抓下來才行。
本章節完成後預計會有這些實作檔,如下圖: