Board logo

標題: 5-6 表單欄位資料的使用(5-6-1 單行文字輸入元件(Text)) [打印本頁]

作者: 小誌    時間: 2011-4-19 09:46     標題: 5-6 表單欄位資料的使用(5-6-1 單行文字輸入元件(Text))

5-6   表單欄位資料的使用
在第一節中,我們僅就表單的資料傳遞方式加以說明,範例中的表單元件「單行文字輸入元件(Text)」與「多行文字輸入元件(Textarea)」並沒有加以說明,事實上,表單的元件相當的多,而表單與表單元件在我們PHP中利用到的機會非常的多,所以有必要下點功夫對表單元件多熟悉一點,在說明這些元件的同時,筆者將會就這些元件欄位相關的PHP函數與物件方法加以介紹。



5-6-1   單行文字輸入元件(Text)
單行文字輸入元件是表單中的基礎元件,出現機率百分之九十以上,例如姓名、住址、電話..等等資料的輸入都會用到它:
  1. 欄位說明文字:<Input Type=”Text” Name=”識別名”>
複製代碼
例如:
  1. 地址:<Input Type=”Text” Name=”Address”>
複製代碼
若您要限制可輸入的字數可加上「Maxlength」屬性,若資料是要寫入資料庫,這個字數限制是有必要限定的,避免使用者故意輸入大量的文字,造成資料庫欄位長度不足,例如限制最大輸入字數為50個字:
  1. 地址:<Input Type=”Text” Name=”Address” Maxlength=”50”>
複製代碼
另外,「Size」屬性可設定單行文字輸入元件的顯示寬度;「Value」屬性可設定出現在單行文字輸入元件中的預設值,例如:
  1. 地址:<Input Type=”Text” Name=”Address” Value=“請輸入戶籍地址”>
複製代碼

作者: 小誌    時間: 2011-4-19 09:48

在PHP中有些函數是與文字輸入的資料處理有密切的關係,例如使用者故意加入HTML標籤,造成資料在顯示時出現不正常排列,造成頁面排版格式亂掉,此種狀況最常出現的就是在「留言版」或「討論區」,此時就可使用「htmlspecialchars()」函數來處理:
htmlspecialchars ()函數格式
  1. string htmlspecialchars ( string string [, int quote_style [, string charset]])
複製代碼
text.php
  1. <html><head>
  2. <title>單行文字輸入元件使用</title>
  3. </head><body>
  4. <form action="text_ans.php" method="Post">
  5. 地址:
  6. <input type="Text" name="Address">
  7. <input type="Submit">
  8. </form>
  9. </body></html>
複製代碼
[attach]5524[/attach]
圖5-19於欄位中故意輸入HTML標籤。

text_ans.php
  1. <html><head>
  2. <title>單行文字輸入元件使用</title>
  3. </head><body>
  4. <%
  5. myaddress=Request.Form("Address")
  6. %>
  7. 關閉HTML標籤使用:<%= Server.HTMLEncode(myaddress) %>
  8. <P>
  9. 開放HTML標籤使用:<%=myaddress %>
  10. </body></html>
複製代碼
利用Server物件的「HTMLEncode」方法可將欄位內的資料加以編碼,結果就成為「&lt;B&gt;台北縣&lt;/B&gt;」,瀏覽器遇到這種特殊字元就會加以解碼成文字顯示出來,而不會將其當成HTML標籤來解讀。
[attach]5525[/attach]
圖5-20 使用「HTMLEncode」方法編碼。
作者: 小誌    時間: 2011-4-19 09:53

要計算使用者所輸入的資料長度(字元數),可使用「strlen函數,如果是空字串則長度為0,特別要注意:空白字元也佔用一個字元長度。
為了確保資料的輸入正確性,避免空白字元的誤輸入與計算資料長度的正確性,我們可以利用「trim()」函數移除資料字串左右兩邊的空白字元,但是夾雜於字元與字元間的空白字元並不會被消除。
text_2.php(節錄)
  1. <form action="text_ans_2.php" method="Post">
  2. 地址:
  3. <input type="Text" name="Address">
  4. <input type="Submit">
  5. </form>
複製代碼
例如:故意於資料前方加入三個空白字元,資料中間與後方各加入一個空白字元:
[attach]5526[/attach]
圖5-22  刻意輸入空白字元。
text_ans_2.php
  1. <html><head>
  2. <title>單行文字輸入元件使用</title>
  3. </head><body>
  4. <?
  5. $myaddress=$_REQUEST["Address"];
  6. ?>
  7. 原始資料:<?=$myaddress?><Br>
  8. 長度:<?=strlen($myaddress)?><Br>
  9. <P>
  10. 去兩邊空白資料:<?=trim($myaddress)?><Br>
  11. 長度:<?=strlen(trim($myaddress))?><Br>
  12. <P>
  13. </body></html>
複製代碼
在下圖中,利用「trim()」等函數移除資料字串左右兩邊的空白字元,再利用「strlen()」函數計算資料長度,您可以發現夾雜於字元與字元間的空白字元並不會被消除,而且一個空白字元就佔用一個空間長度,注意:一個中文字算兩個字元長度。
[attach]5527[/attach]
圖5-22  去除空白字元與計算資料長度。
作者: tokko4286    時間: 2012-7-15 18:22

不好意思 想請問
<%
myaddress=Request.Form("Address")
%>
我使用DW 顯示這段語法錯誤 但我不知道如何修正
還請大大指點
感謝
作者: 小誌    時間: 2012-7-15 20:24

不好意思 想請問

我使用DW 顯示這段語法錯誤 但我不知道如何修正
還請大大指點
感謝
tokko4286 發表於 2012-7-15 18:22
  1. <?
  2. $myaddress=$_REQUEST["Address"];
  3. ?>
複製代碼

作者: bubaby0608    時間: 2013-3-26 03:15

另外,「Size」屬性可設定單行文字輸入元件的顯示寬度;「Value」屬性可設定出現在單行文字輸入元件中的預設值,例如:
  1. 地址:<Input Type="Text" Name="Address" Value="地址" size="5">
複製代碼

作者: bubaby0608    時間: 2013-3-26 03:22

使用「htmlspecialchars()」函數來處理:
  1. <?php
  2. $yaddress = "123</br>123";
  3. $kk = htmlspecialchars($yaddress);
  4. echo $kk;
  5. ?>
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)