php中一個(gè)完整表單處理實(shí)現(xiàn)代碼
更新時(shí)間:2011年11月10日 22:48:21 作者:
《PHP5與MySQL5 Web開發(fā)技術(shù)詳解》第5章主要講的是表單——處理用戶輸入,本小節(jié)主要講的是一個(gè)完整表單處理。
一個(gè)完整表單處理
下面我們將創(chuàng)建一個(gè)復(fù)雜的表單,代碼如下所示。
<form action="someform.php" method="post">
<table width="541" border="0">
<tr>
<td width="26%">姓名:</td>
<td width="74%"><input type="text" name="username" value="raymond" id="username"/></td>
</tr>
<tr>
<td>密碼:</td>
<td><input type="password" name="password" maxlength="10" id="password"/></td>
</tr>
<tr>
<td>年齡:</td>
<td>
<select name="age">
<option value=">16">小于16</option>
<option value="16-30" selected>16-30</option>
<option value="31-50">31-50</option>
<option value="51-80">51-80</option>
</select>
</td>
</tr>
<tr>
<td valign="top">自我介紹:</td>
<td><textarea name="intro" rows="3" cols="50" id="intro">請(qǐng)輸入您的自我介紹</textarea></td>
</tr>
<tr>
<td><br />
體育愛好: </td>
<td><input type="radio" name="fave_sport" value="tennis" checked>
網(wǎng)球
<input type="radio" name="fave_sport" value="football">
足球
<input type="radio" name="fave_sport" value="baseball">
籃球
<input type="radio" name="fave_sport" value="polo">
保齡球 </td>
</tr>
<tr>
<td> 開發(fā)語(yǔ)言:</td>
<td><input name="from" type="hidden" id="from" value="注冊(cè)表單">
<input type="checkbox" name="languages[]" value="php" checked id="languages[]">
php
<input type="checkbox" name="languages[]" value="java" id="languages[]">
java
<input type="checkbox" name="languages[]" value="perl" id="languages[]">
perl
<input type="checkbox" name="languages[]" value="cpp" id="languages[]">
c++
<input type="checkbox" name="languages[]" value=".net" id="languages[]">
.NET
<input type="checkbox" name="languages[]" value="delphi" id="languages[]">
delphi </td>
</tr>
<tr>
<td valign="top"><br>
<label> 開發(fā)工具:</label></td>
<td><select name="develop_ide[]" size="5" multiple id="develop_ide[]">
<option value="ZDE" selected>Zend Studio</option>
<option value="Eclipse">Eclipse</option>
<option value="Editplus">Editplus</option>
<option value="Ultraedit">Ultraedit</option>
<option value="Other">Other</option>
</select></td>
</tr>
<tr>
<td valign="top"> </td>
<td><input type="submit" name="btn_submit" value="提交"/></td>
</tr>
</table>
</form>
該表單包括了常用表單元素:?jiǎn)涡形谋究?、多行文本框、單選項(xiàng)(radio)、多選項(xiàng)(checkbox),以及多選菜單。下面進(jìn)行詳細(xì)的說(shuō)明。
maxlength是與密碼文本框關(guān)聯(lián)的屬性,它限制用戶輸入密碼的最大長(zhǎng)度為10個(gè)字符。
age列表框是列表菜單,它的命名屬性下都有自己的值供選擇。selected是一個(gè)特定的屬性選擇元素,如果某個(gè)option附加有該屬性,在顯示時(shí)就把該項(xiàng)列為第一項(xiàng)顯示。
intro文本框中的內(nèi)容,按照rows和cols顯示文字、行和列寬。
fave_sport是一組單選按鈕(radio),我們要按組命名元素名稱,比如這一組單選按鈕都叫做fave_sport,用戶只可選擇一個(gè),發(fā)送腳本端也只存在一個(gè)值。
和單選項(xiàng)一樣,所有多選項(xiàng)成員也須有同名的屬性,而屬性名稱需要添加括號(hào)[],這樣就把多選項(xiàng)的值以數(shù)組形式發(fā)送給PHP,languages就是這種形式。
checked標(biāo)簽是指單選項(xiàng)和多選項(xiàng)中的某個(gè)值,默認(rèn)已經(jīng)被選擇。
上面表單的顯示畫面如圖5-3所示。
將上面表單中數(shù)據(jù)提交到someform.php腳本,該腳本的處理邏輯如下:
//通過(guò)判斷按鈕的變量名是否在$_POST中定義,如果有表示該表單已提交
if(isset($_POST["btn_submit"])){
if (empty($_POST['username'])){
echo "您沒有輸入用戶名";
exit(0);
}
if (empty($_POST['password'])){
echo "您沒有輸入密碼: ";
exit(0);
}
echo "您的用戶名: ".$_POST['user_name']."
";
echo "您的密碼(明文): ".$_POST['password']."
";
echo "您的年齡: ".$_POST['age']."
";
if (!empty($_POST['languages'])){
echo "您選擇的語(yǔ)言為:";
//處理用戶選擇興趣的checkbox按鈕產(chǎn)生的數(shù)組
foreach ($_POST['languages'] as $lang){
echo $lang. " ";
}
} else {
echo "您沒有輸入任何興趣愛好";
}
if (!empty($_POST['develop_ide'])){
echo "您使用的開發(fā)工具為:";
//處理用戶多選開發(fā)工具菜單產(chǎn)生的數(shù)組
foreach ($_POST['develop_ide'] as $ide){
echo $ide. " ";
}
} else {
echo "您沒有選擇開發(fā)工具";
}
echo "您的自我介紹: ".nl2br($_POST['intro'])."<br />";//nl2br(),在字符串中的每個(gè)新行 (\n) 之前插入 HTML 換行符 (<br />)
";
echo "網(wǎng)頁(yè)隱藏值(通過(guò)hidden標(biāo)簽值傳遞): ".$_POST['from']."
";
}
?>
說(shuō)明:使用POST方式提交表單,通過(guò)HTTP協(xié)議的header部分傳遞表單數(shù)據(jù),理論上數(shù)據(jù)的大小無(wú)上限。不過(guò),在使用PHP進(jìn)行POST提交時(shí),文件大小受PHP配置文件(php.ini)限制,我們可以修改php.ini文件中的post_max_size參數(shù),可將默認(rèn)的2M字節(jié),修改為自己需要的大小,但由于HTTP協(xié)議的特性,這個(gè)值不宜設(shè)置過(guò)大,最大以8M為宜。
下面我們將創(chuàng)建一個(gè)復(fù)雜的表單,代碼如下所示。
復(fù)制代碼 代碼如下:
<form action="someform.php" method="post">
<table width="541" border="0">
<tr>
<td width="26%">姓名:</td>
<td width="74%"><input type="text" name="username" value="raymond" id="username"/></td>
</tr>
<tr>
<td>密碼:</td>
<td><input type="password" name="password" maxlength="10" id="password"/></td>
</tr>
<tr>
<td>年齡:</td>
<td>
<select name="age">
<option value=">16">小于16</option>
<option value="16-30" selected>16-30</option>
<option value="31-50">31-50</option>
<option value="51-80">51-80</option>
</select>
</td>
</tr>
<tr>
<td valign="top">自我介紹:</td>
<td><textarea name="intro" rows="3" cols="50" id="intro">請(qǐng)輸入您的自我介紹</textarea></td>
</tr>
<tr>
<td><br />
體育愛好: </td>
<td><input type="radio" name="fave_sport" value="tennis" checked>
網(wǎng)球
<input type="radio" name="fave_sport" value="football">
足球
<input type="radio" name="fave_sport" value="baseball">
籃球
<input type="radio" name="fave_sport" value="polo">
保齡球 </td>
</tr>
<tr>
<td> 開發(fā)語(yǔ)言:</td>
<td><input name="from" type="hidden" id="from" value="注冊(cè)表單">
<input type="checkbox" name="languages[]" value="php" checked id="languages[]">
php
<input type="checkbox" name="languages[]" value="java" id="languages[]">
java
<input type="checkbox" name="languages[]" value="perl" id="languages[]">
perl
<input type="checkbox" name="languages[]" value="cpp" id="languages[]">
c++
<input type="checkbox" name="languages[]" value=".net" id="languages[]">
.NET
<input type="checkbox" name="languages[]" value="delphi" id="languages[]">
delphi </td>
</tr>
<tr>
<td valign="top"><br>
<label> 開發(fā)工具:</label></td>
<td><select name="develop_ide[]" size="5" multiple id="develop_ide[]">
<option value="ZDE" selected>Zend Studio</option>
<option value="Eclipse">Eclipse</option>
<option value="Editplus">Editplus</option>
<option value="Ultraedit">Ultraedit</option>
<option value="Other">Other</option>
</select></td>
</tr>
<tr>
<td valign="top"> </td>
<td><input type="submit" name="btn_submit" value="提交"/></td>
</tr>
</table>
</form>
該表單包括了常用表單元素:?jiǎn)涡形谋究?、多行文本框、單選項(xiàng)(radio)、多選項(xiàng)(checkbox),以及多選菜單。下面進(jìn)行詳細(xì)的說(shuō)明。
maxlength是與密碼文本框關(guān)聯(lián)的屬性,它限制用戶輸入密碼的最大長(zhǎng)度為10個(gè)字符。
age列表框是列表菜單,它的命名屬性下都有自己的值供選擇。selected是一個(gè)特定的屬性選擇元素,如果某個(gè)option附加有該屬性,在顯示時(shí)就把該項(xiàng)列為第一項(xiàng)顯示。
intro文本框中的內(nèi)容,按照rows和cols顯示文字、行和列寬。
fave_sport是一組單選按鈕(radio),我們要按組命名元素名稱,比如這一組單選按鈕都叫做fave_sport,用戶只可選擇一個(gè),發(fā)送腳本端也只存在一個(gè)值。
和單選項(xiàng)一樣,所有多選項(xiàng)成員也須有同名的屬性,而屬性名稱需要添加括號(hào)[],這樣就把多選項(xiàng)的值以數(shù)組形式發(fā)送給PHP,languages就是這種形式。
checked標(biāo)簽是指單選項(xiàng)和多選項(xiàng)中的某個(gè)值,默認(rèn)已經(jīng)被選擇。
上面表單的顯示畫面如圖5-3所示。
將上面表單中數(shù)據(jù)提交到someform.php腳本,該腳本的處理邏輯如下:
復(fù)制代碼 代碼如下:
//通過(guò)判斷按鈕的變量名是否在$_POST中定義,如果有表示該表單已提交
if(isset($_POST["btn_submit"])){
if (empty($_POST['username'])){
echo "您沒有輸入用戶名";
exit(0);
}
if (empty($_POST['password'])){
echo "您沒有輸入密碼: ";
exit(0);
}
echo "您的用戶名: ".$_POST['user_name']."
";
echo "您的密碼(明文): ".$_POST['password']."
";
echo "您的年齡: ".$_POST['age']."
";
if (!empty($_POST['languages'])){
echo "您選擇的語(yǔ)言為:";
//處理用戶選擇興趣的checkbox按鈕產(chǎn)生的數(shù)組
foreach ($_POST['languages'] as $lang){
echo $lang. " ";
}
} else {
echo "您沒有輸入任何興趣愛好";
}
if (!empty($_POST['develop_ide'])){
echo "您使用的開發(fā)工具為:";
//處理用戶多選開發(fā)工具菜單產(chǎn)生的數(shù)組
foreach ($_POST['develop_ide'] as $ide){
echo $ide. " ";
}
} else {
echo "您沒有選擇開發(fā)工具";
}
echo "您的自我介紹: ".nl2br($_POST['intro'])."<br />";//nl2br(),在字符串中的每個(gè)新行 (\n) 之前插入 HTML 換行符 (<br />)
";
echo "網(wǎng)頁(yè)隱藏值(通過(guò)hidden標(biāo)簽值傳遞): ".$_POST['from']."
";
}
?>
說(shuō)明:使用POST方式提交表單,通過(guò)HTTP協(xié)議的header部分傳遞表單數(shù)據(jù),理論上數(shù)據(jù)的大小無(wú)上限。不過(guò),在使用PHP進(jìn)行POST提交時(shí),文件大小受PHP配置文件(php.ini)限制,我們可以修改php.ini文件中的post_max_size參數(shù),可將默認(rèn)的2M字節(jié),修改為自己需要的大小,但由于HTTP協(xié)議的特性,這個(gè)值不宜設(shè)置過(guò)大,最大以8M為宜。
相關(guān)文章
php header Content-Type類型小結(jié)
php header Content-Type類型小結(jié),很多情況下需要用到Content-Type類型。2011-07-07php中文本數(shù)據(jù)翻頁(yè)(留言本翻頁(yè))
php中文本數(shù)據(jù)翻頁(yè)(留言本翻頁(yè))...2006-10-10PHP如何透過(guò)ODBC來(lái)存取數(shù)據(jù)庫(kù)
PHP如何透過(guò)ODBC來(lái)存取數(shù)據(jù)庫(kù)...2006-10-10PHP基礎(chǔ)教程(php入門基礎(chǔ)教程)一些code代碼
PHP基礎(chǔ)教程(適合有編程基礎(chǔ)的,但是對(duì)PHP很陌生的新手 --教程主要以code的形式表現(xiàn))2013-01-01php學(xué)習(xí)之流程控制實(shí)現(xiàn)代碼
php學(xué)習(xí)之流程控制實(shí)現(xiàn)代碼,學(xué)習(xí)php的朋友可以參考下。2011-06-06php preg_filter執(zhí)行一個(gè)正則表達(dá)式搜索和替換
preg_filter()等價(jià)于preg_replace() 除了它僅僅返回(可能經(jīng)過(guò)轉(zhuǎn)化)與目標(biāo)匹配的結(jié)果. 這個(gè)函數(shù)怎樣工作的更詳細(xì)信息請(qǐng)閱讀 preg_replace()文檔2012-02-02