麻辣家族討論版版's Archiver

小誌 發表於 2011-4-19 09:46

5-6 表單欄位資料的使用(5-6-1 單行文字輸入元件(Text))

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



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

小誌 發表於 2011-4-19 09:48

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

text_ans.php[code]<html><head>
<title>單行文字輸入元件使用</title>
</head><body>
<%
myaddress=Request.Form("Address")
%>
關閉HTML標籤使用:<%= Server.HTMLEncode(myaddress) %>
<P>
開放HTML標籤使用:<%=myaddress %>
</body></html>[/code]利用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(節錄)[code]<form action="text_ans_2.php" method="Post">
地址:
<input type="Text" name="Address">
<input type="Submit">
</form>[/code]例如:故意於資料前方加入三個空白字元,資料中間與後方各加入一個空白字元:
[attach]5526[/attach]
圖5-22  刻意輸入空白字元。
text_ans_2.php[code]<html><head>
<title>單行文字輸入元件使用</title>
</head><body>
<?
$myaddress=$_REQUEST["Address"];
?>
原始資料:<?=$myaddress?><Br>
長度:<?=strlen($myaddress)?><Br>
<P>
去兩邊空白資料:<?=trim($myaddress)?><Br>
長度:<?=strlen(trim($myaddress))?><Br>
<P>
</body></html>[/code]在下圖中,利用「trim()」等函數移除資料字串左右兩邊的空白字元,再利用「strlen()」函數計算資料長度,您可以發現夾雜於字元與字元間的空白字元並不會被消除,而且一個空白字元就佔用一個空間長度,注意:一個中文字算兩個字元長度。
[attach]5527[/attach]
圖5-22  去除空白字元與計算資料長度。

tokko4286 發表於 2012-7-15 18:22

不好意思 想請問
<%
myaddress=Request.Form("Address")
%>
我使用DW 顯示這段語法錯誤 但我不知道如何修正
還請大大指點
感謝

小誌 發表於 2012-7-15 20:24

[quote]不好意思 想請問

我使用DW 顯示這段語法錯誤 但我不知道如何修正
還請大大指點
感謝
[size=2][color=#999999]tokko4286 發表於 2012-7-15 18:22[/color] [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=40873&ptid=3147][img]http://forum.twbts.com/images/common/back.gif[/img][/url][/size][/quote][code]<?
$myaddress=$_REQUEST["Address"];
?>[/code]

bubaby0608 發表於 2013-3-26 03:15

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

bubaby0608 發表於 2013-3-26 03:22

使用「htmlspecialchars()」函數來處理:[code]
<?php
$yaddress = "123</br>123";
$kk = htmlspecialchars($yaddress);
echo $kk;
?>
[/code]

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供