程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET中的輸入驗證之服器端驗證

ASP.NET中的輸入驗證之服器端驗證

編輯:關於ASP.NET

在ASP.NET平台下.用戶可以使用控件和正則表達式在服務器端實現輸入驗證,相對來說驗證控件使 用簡單 且能滿足大部分需求 但說句實話 偶對這些東東是不敢恭維

Microsoft Visual Studio驗證控件 既是客戶端驗證又是服務器端驗證 當我們觸發驗證 就會自動生 成很多客戶端腳本 如果我們單擊按扭不但要觸發驗證 還要寫一些其它的腳本 驗證將可能失效 在項目 中為了防止這類意外發生 有人提了用客戶端驗證 但是敲過代碼的都曉得客戶端不安全 所以只有先服務 器端驗證有時間再加個客戶端驗證咯

服務器端驗證

問題一:驗證什麼

日期控件 下拉列表 多選 單選 還有最常用的文本框 等等。。

是否為空 是不是數字 字符串的長度等等。。

問題二:什麼時候開始驗證

什麼時候需要驗證 什麼時候需要用到那些客戶輸入 但需要注意的是驗證不能寫的到處是 我們可以定 義一個方法 專門驗證頁的輸入

問題四:異常處理

異常有兩種 一種是系統異常 一種是邏輯異常 我們要做的是對邏輯異常的處理 我寫了些驗證 其實網 上多的是 屁話少說 看代碼!。

項目公用輸入驗證

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace Nadim.Verify.Common
{
    /// <summary>
    /// 參數檢驗
    /// </summary>
    public static class ParameterVerify
    {
        #region 檢驗字符串
        /// <summary>
        /// 檢驗字符串是否有非法字符
        /// </summary>
        /// <param name="strInput">輸入字符串</param>
        /// <returns>是否通過檢驗</returns>
        public static bool VerifyString(string strInput)
        {
            //參數檢查
            if (strInput == null || strInput.Trim() == "") return true;
            //檢查是否有非法字符
            if (Regex.IsMatch(strInput, "([<>'\"])|(delete from)|(drop 

table)"))
                return false;
            else
                return true;
        }
        #endregion
        #region 檢驗日期字符串
        /// <summary>
        /// 檢驗日期字符串是否合法
        /// </summary>
        /// <param name="strInput">輸入字符串</param>
        /// <returns>是否通過檢驗</returns>
        public static bool VerifyDate(string strInput)
        {
            if (strInput == null || strInput.Trim() == "") return false;
            try
            {
                Convert.ToDateTime(strInput);
            }
            catch (FormatException)
            {
                return false;
            }
            return true;
        }
        #endregion
        #region 檢驗時間字符串
        /// <summary>
        /// 檢驗時間字符串,驗證格式(YYYY-MM-DD hh:mm:ss)
        /// </summary>
        /// <param name="strInput">要驗證的字符串</param>
        /// <returns>是否通過檢驗</returns>
        public static bool VerifyDateTime(string strInput)
        {
            //參數檢查
            if (strInput == null || strInput.Trim() == "") return false;
            if (Regex.IsMatch(strInput, @"^(\d{4})(-|/)?((0[1-9])|(1[0-2]))(-|/)?(((0

[1-9])|([1-2][0-9]))|(3[0-1])) ([0-1][0-9])|(2[0-3]):([0-5][0-9]):([0-5][0-9])$"))
                return true;
            else
                return false;
        }
        #endregion
        #region 檢驗編碼字符串
        /// <summary>
        /// 檢驗是否是正確的編碼字符串,格式:字母、數字、“-”、“_”
        /// </summary>
        /// <param name="strInput">輸入字符</param>
        /// <param name="minsize">最小長度</param>
        /// <param name="maxsize">最大長度</param>
        /// <returns>是否通過檢驗</returns>
        public static bool VerifyNo(string strInput, int minsize, int maxsize)
        {
            //參數檢查
            if (strInput == null) return false;
            String expression = @"^(((\w)|(_)|(-)|(\s)){" + minsize + 

"," + maxsize + @"})$";
            if (Regex.IsMatch(strInput, expression))
                return true;
            else
                return false;
        }
        #endregion
        #region 檢驗數字字符串
        /// <summary>
        /// 檢驗數字字符串
        /// </summary>
        /// <param name="strInput">輸入字符</param>
        /// <param name="length">數字長度(不算小數點)</param>
        /// <param name="precision">小數點後的位數</param>
        /// <param name="allowMinus">是否允許為負數</param>
        /// <returns>是否通過檢驗</returns>
        public static bool VerifyDecimal(string strInput, int length, int precision, bool 

allowMinus)
        {
            String expression;
            //參數檢查
            if (strInput == null) return false;
            //判斷是否可為負數
            if (allowMinus)
                expression = @"^(-{0,1}[0-9]{0," + (length - precision).ToString() 

+ @"}\.{0,1}|\.[0-9]{1," + precision.ToString() + @"}|-{0,1}[0-9]{1," + 

(length - precision).ToString() + @"}\.[0-9]{0," + precision.ToString() + 

@"})$";
            else
                expression = @"^([0-9]{0," + (length - precision).ToString() + 

@"}\.{0,1}|\.[0-9]{1," + precision.ToString() + @"}|-{0,1}[0-9]{1," + 

(length - precision).ToString() + @"}\.[0-9]{0," + precision.ToString() + 

@"})$";
            if (Regex.IsMatch(strInput, expression))
                return true;
            else
                return false;
        }
        #endregion
        #region 檢驗變長字符串
        /// <summary>
        /// 檢驗變長字符串
        /// </summary>
        /// <param name="strInput">輸入字符串</param>
        /// <param name="minsize">最小長度</param>
        /// <param name="maxsize">最大長度</param>
        /// <returns>是否通過檢驗</returns>
        public static bool VerifyVarchar(string strInput, int minsize, int maxsize)
        {
            //參數檢查
            if (strInput == null) return false;
            if (VerifyString(strInput) && strInput.Length >= minsize && 

strInput.Length <= maxsize)
                return true;
            else
                return false;
        }
        #endregion
        #region 檢驗整數字符串
        /// <summary>
        /// 檢驗整數字符串
        /// </summary>
        /// <param name="strInput">輸入字符串</param>
        /// <param name="allowMinus">是否允許為負數</param>
        /// <returns>是否通過檢驗</returns>
        public static bool VerifyInt(string strInput, bool allowMinus)
        {
            int i;
            //參數檢查
            if (strInput == null) return false;
            try
            {
                i = Convert.ToInt32(strInput.Trim());
                if (allowMinus == false && i < 0)
                    return false;
                else
                    return true;
            }
            catch (FormatException)
            {
                return false;
            }
        }
        #endregion
    }
}

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