程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> webform登錄操作中正則表達式運用,webform正則表達式

webform登錄操作中正則表達式運用,webform正則表達式

編輯:C#入門知識

webform登錄操作中正則表達式運用,webform正則表達式


           關於正則表達式的運用,估計很多人都會覺得這很麻煩。確實很麻煩,太多表達式我也記不住,很多都是臨時需要用的時候再去查,有點小學生讀小說的架勢,不認識的字再去翻字典。

          正則表達式嚴格來說對於程序的功能實現作用不大,他的作用在於程序的安全性和程序保護,比如登錄的時候,如果不寫正則表達式,很容易產生數據注入的情況。程序的安全性得不到保障,當然用其他的判定方法也能起到同樣的作用,不過相對來說,寫個正則表達式是最簡單的了。

         這裡說的是webform登錄的正則表達式,那我們先建一個webform項目,然後添加一個web窗體編輯

//注:這兒最好在textbox下面添加一個label來對輸入文字進行說明,以增加用戶的便利性。

然後我們創建一個button-click事件,

 1  protected void Button1_Click(object sender, EventArgs e)
 2         {
 3             string UserName = TextBox1.Text;
 4             string UserPWD = TextBox2.Text;
/**************************************************/ 5 ABCbank bll = new ABCbank(); 6 bool result = bll.login(UserName ,UserPWD );
/*****//注:這兒是一個BLL中的判斷調用,頁面跳轉中判斷用戶名和密碼是否匹配用的***/

7 if (result == true)

8 {
9 Server.Transfer("webform2.aspx");

10 }

11 else

12 {

13 Response.Write("<script>alert('賬號或密碼錯誤')</script>");

14 }

15 }

此時,我們對上一頁面兩個textbox輸出的兩個值創建過程來返回,代碼如下

   public string UserName
        {
            get
            {
                return TextBox1.Text;
            }
        }
        public string UserPWD
        {
            get
            {
                return TextBox2.Text;
            }
        }
    }

這時候我們創建一個webform2窗體,在webform2中放兩個label,在webform2的Page_Load下我們添加如下代碼

 protected void Page_Load(object sender, EventArgs e)
        {
            WebForm1 wf1;
            wf1 = (WebForm1)Context.Handler;
            Label1.Text = wf1.UserName;
            Label2.Text = wf1.UserPWD;
        }

在web.config中添加一個數據源,就可以進行跳轉了。從程序上來說,這裡功能實現是沒有問題的。但是,是否一定要正確的用戶和密碼才能登入呢,當然不是,在這裡就不多講進入方式,只講一下簡單的SQL注入吧。SQL注入的意思就是通過用戶名密碼的輸入,將SQL語句編入其中以進行數據注入,那麼這樣,這兒就需要進行一個程序保護問題。

 我們首先考慮一下我們的用戶名,是否可以制定一定的規范,就如同身份證號碼,只能是15位或者18位的數字一樣。假如,我們設定我們的用戶名只能由英文字母和數字組成,不包含空格及標點符號,那麼我們應該怎麼寫這個保護呢,我們首先來看看定義英文和數字的正則表達式:"^[A-Za-z0-9]+$",再看看定義密碼的正則表達式,只能由字母,數字和下劃線組成的表達式"^[A-Za-z0-9]+$",那我們就來對用戶名和密碼的輸入寫入正則表達式看看 

 string UserName = TextBox1.Text;
            string pattern = "^[A-Za-z0-9]+$";
            Regex r = new Regex(pattern);
            Match m = r.Match(UserName );
            if (m.Success)
            {
                Response.Write(m.Value);
            }
            else
            {
                Response.Write("用戶名只能由字母和數字組成");
            }
          
            string UserPWD = TextBox2.Text;
            string pattan1 = "^[A-Za-z0-9]+$";
            Regex r1 = new Regex(pattan1);
            Match m1 = r1.Match(UserPWD );
            if (m1.Success)
            {
                Response.Write(m1.Value);
            }
            else
            {
                Response.Write("密碼只能由數字和字母組成");
            }

在這裡我們加入了正則表達式的判斷,如果輸入的字符不符合我們的判定,那麼就會提示輸入錯誤,這樣就能有效的避免一些數據注入的情況。當然,同樣的方法也適用於注冊,或者其他一些數據輸入的地方。需要說明的是,或許有人會因為我把判斷寫在前端來诟病這種方法會影響程序運行的速度,也有人喜歡將判定寫在後台,不過我個人覺得還是前端好一些,有問題早解決,等數據傳入後台的這個過程中會不會發生其他的什麼數據滲透情況呢?如果能在第一時間就把非法輸入給踢出局,未嘗不能這樣。判斷和數據獨立,也能保證數據的安全性。
最後,初學者,有什麼說的不對的,請懷著看戲的心情閱讀此文,謝謝@!

 

 

 


web前端開發 js學習重點有什?正則表達式這塊重要不重要? 用到的地方多?

問對人了。。。
前端開發開發工程師的話,CSS+HTML+JS
JS的高級概念你需要會,例如:閉包,面向對象的編程,JS的調式,常用的JS庫,JQuery或是Ext你得會一個,Ajax技術,Ajax回調函數,正則是必須的,郵箱驗證啊,有規律的字符匹配啊,都要會的,建議學校prototype的內容能讓你的認識更深一層樓。

HTML現在新的HTML5的內容你學校還是蠻好的
 

c#正則表達式應用

subjectString = txtNum1.Text;
try {
if (Regex.IsMatch(subjectString, @"\A[1-9]+\Z")) {
// 匹配成功

} else {
// 不是非零整數
}
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved