第十回:表單設計與參數傳遞

 

PHP 變數

和所有的程式語言一樣,PHP 將資料儲存在變數裡,利用變數的名稱就能存取變數內存的資料。在 PHP 裡,變數必須在名稱前面加上 '$' 字元,而且在使用變數前不需要經過事前地宣告,這一點與 C/C++ 非常地不同。也因此,PHP 裡的變數可以儲存各種不同型態的資料,不像 C/C++ 裡的變數受到宣告型態的限制 (這一點是兩面刃,是有利亦有弊的)。通常,只要直接把資料的值指定給變數,就表示可以開始使用該變數了,例如底下的程式碼將輸出 "Have a nice day !"。

<?php
$s = "Have a nice day !"; echo $s; ?>

與使用者互動

變數可以用來儲存使用者填入表單的資訊,在 PHP 裡,表單元件的內容可以使用 getpost 方法,將其傳送到另一個接收資料的網頁。例如,

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title>無標題文件</title>
</head>
<body>
<form name="form1">
輸入一個數字: <input name="txtNum" type="text"> <input type="submit" name="Submit" value="送出資料"> </form>
<?php
$No = $_REQUEST[txtNum];
if (!empty($No))
echo "The input number is ".$No;
?>
</body>
</html>

上述 PHP 程式片段的輸出結果,將如下圖:

 

使用 GET 方法

當我們提出 GET 請求時,表單內的所有資料都會附加在所請求的網頁後面,以 '?' 開頭,格式是 key=value。若表單內的資料項目超過一項時,GET 方法會將各資料項目以 '&' 符號連接起來,例如,

http://www.fg.tp.edu.tw/~Dykstra/curriculum/2004bcc/2nd/PHPTest/aplusb.php?a=3&b=9

上述網址表示將變數 a 的值 (=3) 與變數 b 的值 (=9) 傳遞給一個名為 aplusb.php 的程式。

 

使用 POST 方法

使用 POST 請求亦可將表單資料送給所請求的 PHP 程式,但是表單資料的內容並不會顯示在網址上。使用 POST 方法也可以傳遞比較多的資料。正因為使用 POST 方法時,所傳遞的表單資料不會顯示在網址上,資料的保密性便提高了。因此, GET 方法比較適合用在查詢資料時使用,若所傳遞的表單內容將是修改資料庫內容的依據時,應該使用 POST 方法來傳遞這些資料。

 

PHP 的內定變數 (Predefined Variables):

當 PHP 程式接受 GET 或 POST 方法傳遞過來的表單資料時,必須使用內定變數來取用所傳遞過來的值。PHP 的內定變數 $_REQUEST 是最常被用來接收 GET、 POST 、COOKIE 等方法所傳過來的資料。例如,將表單元件 txtName 的內容 POST 給名為 apply.php 的 PHP 程式 時,若 apply.php 想要將 txtName 的內容存在變數 $name 中,則可撰寫程式如下:

     <?PHP
         $name = $_REQUEST[txtName];
     ?>

由於 PHP 程式可接收的資料來源有很多種,所以 PHP 採用各種不同的內定變數來接收不同型態的資料。其中,$_REQUEST 被用來接收 GET、 POST 、COOKIE 等方法所傳過來的資料,而 $_FILE 則被用來接收檔案型態的資料,$_SESSION 則用來存取 SESSION 的內容。這些由 $_ 開頭的變數,稱為 PHP 的內定變數。PHP 內定變數的詳細用法可以在 PHP 的網站 (http://www.php.net) 上,利用官方說明文件對 Predefined Variables 的定義及用法加以瞭解。

 

範例:求 a+b 的值

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title>a+b=?</title>
</head> <body> <?php $a = $_REQUEST[a]; $b = $_REQUEST[b]; if (empty($a) && empty($b)) { ?> <form name="form1" method="post" action=""> <p>a=<input name="a" type="text" id="a"></p> <p>b=<input name="b" type="text" id="b"></p> <p><input type="submit" name="Submit" value="a+b=?"></p> </form> <?php } else { $c = $a + $b; echo "a+b=".$c; } ?> </body> </html>

 

練習:

  1. 請寫一個 PHP 網頁,利用表單輸入變數 a 與變數 b 的值,然後輸出 a與b 的關係。

 

參考網頁:

  1. 網站建置百寶箱
  2. PHP 官方網站

 

Last update : 2006年2月17日