PHP

PHP表單處理

前面的文章中我們曾經提到過,在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>

此程式的執行結果如下:

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s