2018年12月21日 星期五

DW_PHP_AJAX_CH4 PHP對資料的接收與輸出_(1)表單資料的讀取_自查詢字串取得資料

表單「Form」是資料傳遞的一個重要工具, 它提供了必要的輸入介面讓使用者輸入資料, 並將這些輸入的資料提交給PHP程式作後續的處理, 而接收表單所傳遞的資料則可直接當成變數來處理。

 [自查詢字串取得資料] 

一個簡單的姓名、電子信箱,兩個欄位資料傳送的表單(getForm.htm)為例, 表單資料將交由getForm.php的PHP程式處理, 並以GET方式傳送表單資料。

<body>
<form id="form1" name="form1" method="GET" action="easyHtml.php">
<label for="aName">姓名:</label>
<input type="text" name="aName" id="aName" />
<br />
<label for="email">信箱:</label>
<input type="text" name="email" id="email" />
<br />
<input type="submit" name="button" id="button" value="送出" />
</form>
</body>


form 標籤的 method (傳輸方式)屬性值若為「GET」, 則代表按下『送出』按鈕後, 瀏覽器將會立即主動的將資料傳給伺服器, 使用這種方式並不太好!因為當按下『傳送』按鈕後, 表單中的資料將會附在網址之後傳送到伺服器:

 上圖中, 在「http://localhost/ch4/getFormAct.php」網址後端所串接的資料『?aName=xxx&email=xxx』, 就是表單以「GET」方式所傳遞的欄位資料,在「?」之後的才是表單內的資料, 「?」是網址與表單之間的區隔符號, 在「=」左邊的是表單欄位名稱(資料輸出的識別名稱, 參數名稱), 在「=」右方就是「資料值(參數的資料值)」, 表單欄位名稱是PHP程式讀取資料的識別依據, 若有多項參數資料自表單中傳出, 則各個參數資料間會以「&」符號區隔:

 若是表單以「GET」方式傳遞欄位資料, 則在接收資料時便得使用$_GET["表單欄位名稱"]的方式來取的參數資料:
<p><?php echo $_GET['aName']; ?>您好!!</p>
<p>您的信箱為:<?php echo $_GET['email']; ?></p>

以Dreamweaver建立getFormAct.php並接收採用GET方法傳送的表單資料步驟如下:
1. 選取主功能表【視窗】/【繫結】。 
2. 選取「繫結」頁籤, 按下「+」按鈕, 選取『URL變數』命令。

 3. 在「URL變數」對話框的「名稱」欄位中輸入要接收的資料變數名稱, 下圖為設定接收來自'aName'欄位的值:

 4. 重複步驟2、3, 設定接收來自'email'欄位的值。
 5. 利用拖曳的方式, 將URL變數aName自繫結面板拖曳至網頁中:

 6. 將URL變數email自繫結面板拖曳至網頁中:

 !!!TIP: 

 在設計視窗中, 以大括號包括並呈現藍底的文字即為繫結元素, 其顯示的資料內容是由PHP程式動態產生。
 若, 在接收資料時使用「$_GET[“表單欄位名稱”]」的方式來取得參數資料, 那資料的傳遞就不一定要透過表單了, 亦可以在瀏覽器的網址中直接輸入資料, 不過, 參數名稱是必須相同的, 而參數資料值則可隨意變換。 

為了確保資料的輸入正確性, 避免空白字元的誤輸入, 我們可以利用「trim()」函數將來自欄位資料字串左右兩邊的空白字元移除, 但是夾雜於字元與字元間的空白字元並不會被消除。在Dreamweaver中設定步驟如下圖:

 !!!TIP:

上圖【修剪】/【左方】 是應用PHP的ltrim()函數, 而【修剪】/【右方】是應用PHP的rtrim()函數。
<?php  /*移除資料字串左右兩側的空白*/
echo trim($_GET['email']); ?>
<?php  /*移除資料字串左側的空白*/
echo ltrim($_GET['email']); ?>
<?php  /*移除資料字串右側的空白*/
echo rtrim($_GET['email']); ?>

!!!TIP: 

在PHP4.2.0版本之前, 外部變數的讀取只要在變數名稱前方加上 $ 符號, 即可取用變數的值;在PHP4.2.0版本之後, 為了系統安全的理由, 在 php.ini 組態設定檔裡頭的 register_globals項目被預設為 Off, 所以外部變數的讀取必須使用 『$_xyz[“變數名稱”]』的方式才行, xyz 所指的包括 GET、POST、REQUEST…等。

沒有留言:

張貼留言