表單在網頁中主要負責資料擷取功能、整體把資料傳遞過去,大大提高向伺服器提交資料的效率。
表單三個基本組成部分:
表單標籤:這裡麵包含了處理表單資料所用CGI程式的URL以及資料提交到伺服器的方法。
表單域:包含了文字框、密碼框、隱藏欄位、多行文字框、複選框、單選框、下拉選擇框和檔案上傳框等。
表單按鈕:包括提交按鈕、複位按鈕和一般按鈕;用於將資料傳送到伺服器上的CGI指令碼或者取消輸入,還可以用表單按鈕來控制其他定義了處理指令碼的處理工作。
表單格式:
<form name="表單的名稱" method="get | post" action="URL"> ......</form>
Form表單資料提交到伺服器的方式有兩種:Get和Post方式。
Request.Form["UserName"].ToString();或者:Request.Form.Get["UserName"].ToString();Get方法接收:Request["UserName"].ToString();
(1) get是把參數資料隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML 。HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程。
(2) 對於get方式,伺服器端用Request.QueryString擷取變數的值,對於post方式,伺服器端用Request.Form擷取提交的資料。
(3) get傳送的資料量較小,不能大於2KB。post傳送的資料量較大,一般被預設為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
(4) get安全性非常低,post安全性較高。
post 和 get 的聯絡:
GET 將表單資料附加到請求頁面的URL地址後面。GET方法用來傳送少量資料, URL的長度限制在8192個字元以內。如果發送的資料量太大,資料將被截斷,從而導致意外的處理結果。
POST 在HTTP請求中嵌入表單資料。POST方法可用來發送大量資料,而且對於使用者名稱、密碼和信用卡等機密資訊的發送,POST方法比GET方法更安全。
特別說明
一般來說,盡量避免使用Get方式提交表單,因為有可能會導致安全問題。比如說在登陸表單中用Get方式,使用者輸入的使用者名稱和密碼將在地址欄中暴露無遺。但是在分頁程式中,用Get方式就比用Post好。本例中用到的表單的屬性解釋(ASP部分請參考第四部分): Get把參數添加到action屬性指定的地址中,並以錨方式開啟。
Post通過HTTP post處理髮送資料。
Form資料集合
使用Request的Form集合來擷取用戶端通過POST方法傳送的表單資料,例如,伺服器上有兩個網頁form.htm和do.aspx,form.htm中包含一個表單,表單傳送資料的方法為POST,並且表單提交到同一目錄下的do.aspx。form.htm的代碼如下:
<html> <head> <title>使用POST傳送資料</title> </head> <body> <form method="post" action="do.aspx"> 請輸入您的名字:<input type="text" name="mingzi"><br> <input type="submit" value="提交"> </form> </body> </html>
在do.aspx中將使用Request.Form["mingzi"]來擷取使用者輸入的名字,do.aspx的代碼如下:
private void Page_Load(Object o,EventArgs e)
//頁面載入後即顯示表單資料
{ string strmessage="您的名字為:"; //定義字串變數並賦初值 strmessage+= Request.Form["mingzi"]; //把表單資料串接到變數 Response.Write(strmessage);//輸出變數 }QueryString資料集合
可以利用QueryString集合來擷取用戶端通過GET方法傳送的表單資料,如果把form.htm中表單的method屬性值由POST改為GET,則在do.aspx中就需要通過Request.QueryString ["mingzi"]來擷取輸入的名字。因為GET方法傳送資料有一定的限制並且不安全,所以表單一般不使用GET方法。
private void Page_Load(object sender, System.EventArgs e) { if(Request.QueryString["mingzi"].ToString()!="") Response.Write("您的名字是:"+Request.QueryString["mingzi"].ToString()); }
在Web應用程式開發中,QueryString常用來擷取URL查詢字串中變數的值,這與使用GET方法傳送表單資料的情況一樣。隨著實踐的深入逐步的加深理解!