透過一個完整的會員註冊案例,串聯表單設計、CSS 美化、多種輸入控制項、伺服器端接收驗證與資料回顯,展示 ASP 表單處理的標準工作流。
<HTML>
<HEAD><TITLE>會員註冊</TITLE>
<style type="text/css">
<!--
body,td,th { font-size: 11pt; color: #009999; line-height: 1.5; }
body { background-color: #ffffff; margin: 0; }
a:link { color: #0000FF; text-decoration: none; }
a:visited { color: #0000FF; text-decoration: none; }
a:hover { color: #FF0000; text-decoration: underline; }
a:active { text-decoration: none; }
.style2 {color: #0000FF} .style4 {color: #FF0000}
-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"></HEAD>
<body background="4.jpg">
<br><br><br><br><br><br>
<form name="form1" method="post" action="show.asp">
<table width="580" border="2" align="center" bgcolor="#b5b5b4">
<tr bgcolor="#000066" height="40">
<td colspan="2" align="center"><font color="#fffff"><b>請 註 冊</b></font></td></tr>
<tr height="30">
<td align="center">姓名:<input type="text" name="姓名"></td>
<td align="center">密碼:<input type="password" name="密碼"></td></tr>
<tr height="30" align="center">
<td>男:<input type="radio" name="性別" value="男" checked>
女:<input type="radio" name="性別" value="女"></td>
<td>學歷: <select name="學歷" style="width:156px">
<option value="初中">初中</option>
<option value="高中">高中</option>
<option value="中專">中專</option>
<option value="大專">大專</option>
<option value="本科" selected>本科</option>
<option value="研究生">研究生</option>
<option value="博士生">博士生</option>
</select></td></tr>
<tr height="30" align="center">
<td colspan="2">
<input type="checkbox" name="愛好" value="讀書">讀書
<input type="checkbox" name="愛好" value="郊游">郊游
<input type="checkbox" name="愛好" value="跳舞">跳舞
<input type="checkbox" name="愛好" value="唱歌">唱歌
<input type="checkbox" name="愛好" value="看新聞">看新聞
<input type="checkbox" name="愛好" value="聚會">聚會
</td></tr>
<tr>
<td colspan="2">
<font color="red"><b> 您最喜歡的格言:</b></font>
<p> <textarea name="格言" rows="6" cols="70"> 世上要學的...(預設文字)</textarea></td></tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="提交" value=" 提 交 ">
<input type="reset" name="重置" value=" 重 置 "></td></tr>
</table>
</form>
</body></HTML>
<HTML><HEAD><TITLE>註冊結果</TITLE>
<style type="text/css"><!-- ...(同 login.htm 樣式) --></style>
<body background="4.jpg"><br><br><br><br><br><br>
<%
Dim name, ps, sex, schoolage, like1, adage
name = Request.Form("姓名")
ps = Request.Form("密碼")
sex = Request.Form("性別")
If sex = "男" Then sex = "帥哥" Else sex = "亮妹" End If
schoolage = Request.Form("學歷")
like1 = Request.Form("愛好")
adage = Request.Form("格言")
%>
<center>
<table border="2" width="500">
<tr><th colspan="2" bgcolor="#009966"><font color="#ffffff">您 的 資 料 如 下 :</font></th></tr>
<tr align="center" height="350" valign="middle" bgcolor="#FFFFFF">
<td align="center">
歡迎<%=name%><%=sex%>的光臨!<p>
您的愛好是:<%=like1%><p>
您的學歷是:<%=schoolage%><p>
您的密碼是:<%=ps%><p>
<table>
<tr><th><font color="red">您的格言是:</font><p></th></tr>
<tr><td><%=adage%></td></tr>
</table>
</td></tr></table>
</center></body></HTML>
| 控制項 | HTML 標籤 | 伺服器端取值方式 | 注意事項 |
|---|---|---|---|
| 單行文字 | <input type="text" name="姓名"> | Request.Form("姓名") | 預設值用 value 屬性 |
| 密碼 | <input type="password" name="密碼"> | Request.Form("密碼") | 瀏覽器顯示為星號,傳輸仍為明文(需 HTTPS) |
| 單選鈕 | <input type="radio" name="性別" value="男" checked> | Request.Form("性別") | 同組 name 必須相同,value 不同;至少一個 checked |
| 下拉選單 | <select name="學歷"><option value="本科" selected>... | Request.Form("學歷") | 單選傳回單一值;multiple 屬性則傳回陣列 |
| 核取方塊群組 | <input type="checkbox" name="愛好" value="讀書">... | Request.Form("愛好") 傳回逗號分隔字串 | 若需逐一處理,配合 Split 或 Request.Form("愛好").Count |
| 多行文字 | <textarea name="格言" rows="6" cols="70">預設文字</textarea> | Request.Form("格言") | 保留換行;顯示時需 Replace(adage, vbCrLf, "<br>") |
| 提交/重置 | <input type="submit"> / <input type="reset"> | 無對應值(除非給 name/value) | reset 為客戶端動作,不送往伺服器 |
Server.HTMLEncode 防止 XSS:Response.Write Server.HTMLEncode(name)。__token,伺服器驗證 Session 中 token 一致。Command.Parameters 或 ADODB.Parameter 防 SQL Injection。enctype="multipart/form-data" 並採用元件 (如 ASPUpload) 或 Request.BinaryRead 解析。<%@ Language=VBScript %>
<% Option Explicit %>
<%
Dim name, ps, sex, schoolage, like1, adage, errMsg
If Request.Form("姓名") <> "" Then
' 驗證邏輯...
If errMsg = "" Then
' 寫入資料庫 / 設定 Session / 導向歡迎頁
Response.Redirect "welcome.asp"
Response.End
End If
End If
%>
<html>...(表單 HTML)...
<% If errMsg <> "" Then Response.Write "<div class='error'>" & errMsg & "</div>" %>
...(表單欄位保留用戶輸入:value="<%=Server.HTMLEncode(name)%>") ...
</html>
此模式優點:URL 不變、回顯錯誤與保留輸入更自然、前後端程式碼聚合易維護。
掌握表單完整流程,是建構任何互動式 Web 應用的核心能力。