Login VB-OOP 實作前言
Login (登入/登錄) 動作,不管在任何應用系統 (AP, Application System)都能看到它的影子。像我的手機,一開機先問個 PIN 密碼...光一個手機,就能有好多密碼。
- 進公司刷卡(Card);
- 提錢(Card);
- 上網(Accout/Password);
- 回家開門(Key);
- 開車(Key);
- 指紋(生物辨識);
你能發現每天從早到晚,其實都在不斷的 Login / Logout,出門上班,對「家」而言,你是 Logout,開車上班,對「車」而言,你是 Login,到達公司,對「車」而言,你是 Logout,進公司,必須刷卡才能進入,那是 Login,下班刷卡離開公司,那是 Logout。
指紋辨識,這幾年拜 NB 幫的忙,很多 NB 都把指紋辨識當成基本配備,省下了打 Keyboard 的時間,刷一下手指,超方便的。還記得,大學時在「
國家太空中心」打工,國家太空中心可以使用「掌紋辨識」,在當時可以說是很先進方便,辨識率也不錯,就我在那裡打工時間裡,最少沒有出錯過。
以下是以程杰(大話設計模式作者) Blog 裡兩篇文章為基礎,以這兩篇文章實作出 Visual Basic 可執行版本。
- 凭什么要用面向对象编程——面向对象重要设计原则概述
- 凭什么要用面向对象编程(补充)
非常推薦給學習過物件導向的人來看,Login 範例非常實用,只要是「AP」你一定會碰到 Login 問題,學習如何透過物件導向來處理此一問題。
我覺得另一重點是「思緒」,想想,如果是你,你會怎麼處理?是否會有一樣的思緒?而且我認為文章中提出的問題,都還算常見,不算是那種為了寫書或寫文章而特別設計的例子。
範例一:網頁登入 (CodeBehind) (對應文章 2007-7-1 對話)
WebForm_1 專案 - Login.aspx
Login.aspx 介面 HTML。
<h2>網頁登錄 ( CodeBehind )</h2>
<form id="form1" runat="server">
<div>
<asp:Label ID="lbName" runat="server" Text="帳號:"></asp:Label>
<asp:TextBox ID="tbName" runat="server"></asp:TextBox>
<br />
<asp:Label ID="lbPassword" runat="server" Text="密碼:"></asp:Label>
<asp:TextBox ID="tbPassword" runat="server" TextMode="Password"></asp:TextBox>
<br />
<br />
<asp:Button ID="btnLogin" runat="server" Text="登錄" />
</div>
</form>
Login.aspx.vb CodeBehind 程式碼。
Public Class Login
Inherits System.Web.UI.Page
Protected Sub tbLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
Dim userName As String = tbName.Text
Dim passWord As String = tbPassword.Text
If (login(userName, passWord)) Then
Response.Redirect("LoginOK.aspx")
Else
Response.Redirect("LoginFail.aspx")
End If
End Sub
Private Function login(userName As String, password As String) As Boolean
' 訪問資料庫,進行帳號及密碼比對
' --- 此處只是為了 Demo 方便,所以寫死 ---
If userName = "kkbruce" And password = "12345" Then
Return True
Else
Return False
End If
End Function
End Class
此範例為最最最基礎的 Login 程式碼,也是最最最一般的 Login 程式碼。注意,
為了 Focus 在「Login」這件事情上面,我們的範例
不會出現任何資料庫相關程式碼,要注意的地方,我都有打上註解。
另外準備兩個網頁, LoginOK.aspx及LoginFail.aspx,內容很簡易,一個打上「網頁登錄成功!」,一個打上「網頁登錄失敗!」,執行我們的第一個專案,這已經是一個能動的範例了。
範例二:手機登錄 ( Class UserAdmin ) (對應文章 2007-7-25 對話)
我個開一個新 WebForm 專案,假設它是手機登錄介面。
WebForm_2 專案 - Login.aspx
PhoneLogin.aspx 介面 HTML 同 WebForm_1 專案。
PhoneLogin.aspx.vb
Public Class Login
Inherits System.Web.UI.Page
Protected Sub tbLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
Dim userName As String = tbName.Text
Dim password As String = tbPassword.Text
' 使用 Class UserAdmin 提供的認證功能。
Dim ua As New UserAdmin
If (ua.Login(userName, password)) Then
Response.Redirect("LoginOK.aspx")
Else
Response.Redirect("LoginFail.aspx")
End If
End Sub
End Class
''' <summary>
''' 用戶管理類別
''' </summary>
Public Class UserAdmin
''' <summary>
''' 登錄資料確認函式
''' </summary>
''' <param name="userName">帳號</param>
''' <param name="password">密碼</param>
''' <returns>Boolean</returns>
Public Function Login(userName As String, password As String) As Boolean
' 訪問資料庫,進行帳號及密碼比對
' --- 此處只是為了 Demo 方便,所以寫死 ---
If userName = "kkbruce" And password = "12345" Then
Return True
Else
Return False
End If
End Function
End Class
我們把原本的 Login 函式提升至一個 UserAdmin 類別裡,這樣就可以給大家共用。