2010年12月7日 星期二

Forms 表單

PHP中,對於表單的處理是相當重要的一個功能。它用於接受使用者回送的資料,然後再伺服器端處理,再根據設定需求做對應。



其實在學習PHP之前,你必須對HTML語法有相當的認識,而form其實就是HTML中的一個標籤,在它裡頭可以有許多類型的元素。

Example
<html>
<body>

<form action="welcome.php" method="post">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>

</body>
</html>

上述的語法在瀏覽器所呈現的樣子如下:


簡單的兩個文字框,供使用者輸入文字,當使用者輸入完畢按送出,這兩個數值就會被傳遞到伺服器。

語法中的action=""雙引號裡頭填寫的是數值將傳遞的目的地,method=""則是傳遞的方式,傳遞的方式有postget兩種,待會我們會解釋兩者的不同處。而各元素的名稱(name)則是接收頁面接收資料的重要依據。

目的地頁如下:
<html>
<body>

Welcome <?php echo $_POST["fname"]; ?>!<br />
You are <?php echo $_POST["age"]; ?> years old.

</body>
</html>

Output
Welcome John!
You are 28 years old.

處理頁面所做的事,是將傳遞過來的值做輸出,注意看到,因為我們表單頁面使用的傳遞方式是POST,所以在接收頁面也要使用POST做接收數值。

接著我們將針對傳遞方式來做說明,上述中有提到,傳遞方式有POSTGET,以下一一的說明。

GET
使用GET為傳遞方式,其傳送的數據資料將會呈現在網址列內,以下範例來說講解。

Example
<form action="welcome.php" method="get">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>

然後我們分別在欄位中填入姓名與年齡之後按送出,網址列在傳遞數值會呈現如下:
http://www.w3schools.com/welcome.php?fname=Peter&age=37

?後所夾帶的就是我們剛才所輸入的數值,在傳遞給處理頁面後接收做後續動作。

Welcome <?php echo $_GET["fname"]; ?>.<br />
You are <?php echo $_GET["age"]; ?> years old!

Output
Welcome Peter.
You are 37 years old.

同樣的,使用GET傳遞就要使用$_GET來接收。

注意,當你使用GET為傳遞方式時,其參數會呈現在網址列,所以,當你處理到關於帳號、密碼時不要使用GET為傳遞方式。而因為使用GET會將所傳遞的數值附帶在網址列,GET傳遞的字串限制為2000個字元,這點要注意。

POST
POST在傳遞資料的過程是看不見的,它並不會像GET一樣夾帶在網址列。前面有提到GET傳遞字串限制為2000個字元,POST的話則是以傳送之資料大小為限制,php.ini參數預設最大為8MB,這個數值的最大與最小值都可以在php.ini中設定,程式開發者可以依個人需求做更動。

POST使用上與GET相同,只是做個更動而己。

<form action="welcome.php" method="post">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>

傳遞後的網址列:
http://www.w3schools.com/welcome.php

POST處理頁面:
Welcome <?php echo $_POST["fname"]; ?>!<br />
You are <?php echo $_POST["age"]; ?> years old.


在接收資料的時候,除了要相對應外,另外有一個Function可以運用在接收頁面中,像是取代$_GET$_POST$_COOKIE

Example
Welcome <?php echo $_REQUEST["fname"]; ?>!<br />
You are <?php echo $_REQUEST["age"]; ?> years old.


參考資料:
PHPMySQL網頁設計實務/網奕出版/吳權威 編著

沒有留言:

張貼留言