前面的文章中我們曾經提到過,在PHP程式中是沒有輸入功能的,主要的原因是PHP程式主要是在伺服器端執行,啟動執行PHP的程序是網頁伺服器(大部份同學在練習時用的都是Apache),而啟動網頁伺服器的執行動作則是來自於客戶端的瀏覽器,這是兩台不同的電腦,因此傳統程式語言中使用的input指令在PHP中是沒有意義的。
那麼,在PHP的程式中要取得使用者的輸入,例如之前在計算BMI時,使用者的身高、體重想要讓瀏覽器的使用者在網頁中輸入選用再加以計算的話,那麼應該如何做呢?答案是使用表單Form。
首先,要建立一個表單的網頁,內容是讓使用者輸入身高以及體重資訊,這個使用HTML程式碼即可完成,如下所示:(以下的PHP檔案請儲存為bmi.php)
<html>
<head>
<meta charset='utf-8'>
<title>
計算您的BMI
</title>
</head>
<body>
<form action='result.php' method='post'>
您的身高:<input type='text' name='height' size=5><br/>
您的體重:<input type='text' name='weight' size=5><br/>
<input type='submit'>
</form>
</body>
</html>
上面這段程式碼雖然命名為.php檔,但是裡面卻沒有任何的PHP程式碼,這其實並沒有關係,因為PHP程式碼本來就是和HTML混雜在一起的,如果沒有任何程式碼的話,網頁伺服器就會把它當作是一般的HTML檔案。
在上述的程式碼中我們建立了一個form表單,其中的屬性action非常重要,它用來表示當此表單中的submit按鈕被按下去之後,伺服器要把表單中的輸入資料傳送到哪一個檔案,在此例中,傳送到的是result.php,此程式的內容如下:
<html>
<head>
<meta charset='utf-8'>
<title>BMI計算結果</title>
</head>
<body>
<h2>您的BMI計算如下:</h2>
<?php
$height = $_POST["height"];
$weight = $_POST["weight"];
$bmi = $weight/(($height/100)*($height/100));
echo "身高:$height 公分<br/>";
echo "體重:$weight 公斤<br/>";
echo "BMI:$bmi<br/>";
?>
</body>
</html>
在result.php中同學們可以發現,我們利用$_POST[“height"]來取得bmi.php表單中的height那個輸入項目,而$_POST[“weight"]則是用來取得weight的那個輸入項目。
bmi.php那個程式的瀏覽器畫面如下:

在按下「提交」按鈕之後,可以得到以下的結果:

使用$_REQUEST存取表單資料
在有些情況下我們會想把表單和處理的程式碼寫成同一支PHP程式,此時就需要透過超級全域變數們的幫忙。請看以下的範例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>
$_REQUEST存取表單資料測試
</title>
</head>
<body>
<form method='POST' action='<?php $_SERVER['PHP_SELF'];?>'>
Height: <input type='text' name='height'>公尺<br/>
Weight: <input type='text' name='weight'>公斤<br/>
<input type='submit'>
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$height = $_POST['height'];
$weight = $_POST['weight'];
echo "你的身高是:" . $height . "<br/>";
echo "你的體重是:" . $weight . "<br/>";
echo "你的BMI是:" . $weight / ($height*$height) . "<br/>";
}
?>
</body>
</html>
此程式的執行結果如下:
