從ASP遷移至ASP+ --處理會話變數(Session Variables)

來源:互聯網
上載者:User
asp+|session|變數 現存的ASP版的eVille禁止對網站的某些部分的訪問,除非使用者已經登入。一些功能像查看將來的優惠特價,報名上課,以及瞭解自己當前的入學狀況是受限制地區。如果想在未登入的狀態下訪問這類地區,你只會被重新導回到登入頁面。使用者在一份表格中輸入他們的使用者名稱與密碼,然後與資料庫的學生表進行比較,如果登入成功,一個名為blnLoggedIn的會話變數便被設為真。這種方法對這個網站是有效,因為它架設在一台單一的伺服器上。其它的方法將被用於web farms上的web應用程式,比如ASP+的會話儲存,或SQL的會話儲存。

   ===確認使用者輸入===

   代碼重寫工作量最大的部分在於那些擷取使用者輸入的頁面,使用者輸入這些資訊以登記成為eVille會員。有一個叫signup.asp的頁面,用來讓使用者輸入他們的重要訊息,現有會員也可籍此更新資訊。未轉換前,表格的資料通過HTTP Post方式遞交給一個叫cookie.asp的頁面。該頁會確認表格中的資料,如果存在錯誤,將使用者導回signup.asp同時在query string中加上錯誤號碼。接著一個Select Case語句會將基於錯誤號碼的輸出進行轉換。我們檢查的錯誤包括:

   *未輸入使用者名稱

   *未輸入密碼

   *密碼與密碼確認不符

   *使用者名稱在資料庫中已存在

   通過將所有的輸入欄位(field)轉換成伺服器控制項,然後添加RequiredFieldValidators,可以輕鬆處理頭兩個可能發生的錯誤。RequiredFieldValidator只須簡單確認經ControlToValidate域鑒別後的伺服器控制項中有輸入值:

   < tr>

   < td valign="top">

   < asp:RequiredFieldValidator runat=server

   ControlToValidate = "txtUserName"

   Display = "static"

   errorMessage="< b>*< /b>"

   ForeColor = "#CC3300" />

   < /td>

   < td valign=top>User Name:< /td>

   < td valign=top>

   < asp:TextBox id="txtUserName" size=25 runat=server />< /td>

   < /tr>

   這種方案是如此簡單以至我們決定在把RequiredFieldValidator添加到所有的表格輸入欄位中。在ASP中,我們通常會用一個VBScript函數來檢驗輸入值,而現在我們只需把RequiredFieldValidator添加到每個我們想確認的控制項中去。

   至於密碼與密碼確認的比較,我們可以使用ASP+的CompareValidator。該控制項允許我們設定ControlToValidate,ControlToCompare以及Operator屬性(在本例中是一個等號,即'Equal')。被指定的兩個控制項用Operator(即操作符)屬性互相比較。與傳統的If...Then語句相比,這種方法明顯要簡單,快捷:

   < asp:CompareValidator runat=server

   ControlToValidate = "txtConfirm"

   ControlToCompare = "txtPassword"

   Type = "String"

   Operator = "Equal"

   Display = "dynamic"

   errorMessage="< b>*< /b>"

   ForeColor = "#CC3300" />

   基於不同的瀏覽器,ASP+ validator控制項會相應執行用戶端的JavaScript驗證(針對IE4.0以上版本),或者執行伺服器端驗證(針對其它情況)。不論驗證是如何執行的,伺服器端的驗證是必不可少的(以阻止某些淘氣的傢伙在用戶端驗證上耍花樣)。

   現在輪到最後一個錯誤了。假如提交的使用者名稱已經存在,這就要求一點點頁面的改動。到目前為止,我們已經用可以執行伺服器端與用戶端驗證代碼的伺服器控制項完成了所有的ASP+驗證。至於最後這個錯誤,我們要提供一些自訂的伺服器端驗證,因為我們需要訪問資料庫以瞭解被請求的使用者名稱是否已存在。我們可以利用ASP+ CustomValidator控制項來解決這一問題。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

11.11 Big Sale for Cloud

Get Unbeatable Offers with up to 90% Off,Oct.24-Nov.13 (UTC+8)

Get It Now >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。