📄 inc_data_check.asp
字号:
<%
'===================================================================
'= ASP FILENAME : /inc/inc_data_check.asp
'= CREATED TIME : AUG,19,2003
'= LAST MODIFIED: AUG,19,2003
'= VERSION INFO : CCASP Framework Ver 2.0.1 ALL RIGHTS RESERVED BY www.cclinux.com
'= DESCRIPTION : 提交至服务器端数据的合法性检测函数
'===================================================================
'===================================================================
'= Function : DataCheck
'= Time : Created At 2006-5-5
'= Input : 数据类型,数据项,数据项名称,附加信息
'= Description : 数据合法性检测主函数
'===================================================================
Function DataCheck(strDataType,ByRef strDataStr,ByRef strDataInfo,ByRef strAddInfo)
'== strDataStr : 输入项名
'== strDataInfo: 输入项信息
'== strAddInfo : 附加信息,用于指定比如固定长度,包含字符等数据校验的参数
'== DT means DATE_TYPE
'== 按错误类型进行分拣和校验
Dim blnErr : blnErr = False
Select Case strDataType
'== 校验数据项是否符合指定长度
Case "DT_FIX_LENGTH" :
blnErr = CheckFixLen(strDataStr,strDataInfo,strAddInfo)
'== 校验数据项是否全为阿拉伯数字
Case "DT_INT" :
blnErr = CheckInt(strDataStr,strDataInfo,strAddInfo)
Case "DT_INT_ZERO" :
blnErr = CheckIntZero(strDataStr,strDataInfo,strAddInfo)
'== 校验数据项是否在某一数值范围内
Case "DT_INT_AREA" :
blnErr = CheckIntArea(strDataStr,strDataInfo,strAddInfo)
'== 校验数据项是否全为阿拉伯数字和英文
Case "DT_EN_NUM" :
blnErr = CheckEnNum(strDataStr,strDataInfo,strAddInfo)
'== 校验数据项是否为中文字符
Case "DT_CHN" :
blnErr = CheckCHN(strDataStr,strDataInfo,strAddInfo)
'== 校验数据项内部是否包含指定字符串
Case "DT_INC_CHAR" :
blnErr = CheckIncChar(strDataStr,strDataInfo,strAddInfo)
'== 校验数据项头部是否包含指定字符串
Case "DT_HEAD_INC_CHAR" :
blnErr = CheckHeadIncChar(strDataStr,strDataInfo,strAddInfo)
'== 校验数据项输入的Email是否合法
Case "DT_EMAIL" :
blnErr = CheckEmail(strDataStr,strDataInfo,strAddInfo)
'== 校验数据项输入的Url是否合法
Case "DT_URL" :
blnErr = CheckUrl(strDataStr,strDataInfo,strAddInfo)
'== 校验是否有非法字符
Case "DT_VALID_CHAR" :
blnErr = CheckValid(strDataStr,strDataInfo,strAddInfo)
'== 校验是否有被禁止的字符
Case "DT_FORBID_CHAR" :
blnErr = CheckForbid(strDataStr,strDataInfo,strAddInfo)
'== 校验数据集ID
Case "DT_ID" :
blnErr = CheckId(strDataStr,strDataInfo,strAddInfo)
'== 校验数据集正整数取值范围
Case "DT_INT_BETWEEN"
blnErr = CheckIntBetween(strDataStr,strDataInfo,strAddInfo)
'== 校验是否为正整数
Case "DT_PLUS_INT"
blnErr = CheckPlusInt(strDataStr,strDataInfo,strAddInfo)
'== 校验数据枚举类型
Case "DT_ENUM" :
blnErr = CheckEnum(strDataStr,strDataInfo,strAddInfo)
Case "DT_ENUM_MORE" :
blnErr = CheckEnumMore(strDataStr,strDataInfo,strAddInfo)
Case "DT_ASC" :
blnErr = CheckAsc(strDataStr,strDataInfo,strAddInfo)
Case Else
Response.Redirect "未定义的数据校验类型:" & strDataType
Response.End
End Select
DataCheck = blnErr
End Function
'===================================================================
'= Function : CheckHeadIncChar
'= Time : Created At 2006-5-5
'= Input : 数据项,数据项名称,附加信息
'= Output : 出错处理
'= Description : 校验数据枚举类型(不区分大小写)
'===================================================================
Function CheckHeadIncChar(strDataStr,ByRef strDataInfo,ByRef strAddInfo)
Dim blnErr : blnErr = False
Dim intCharLen
intCharLen = Len(Trim(strAddInfo))
If Ucase(Left(Trim(strDataStr),intCharLen)) <> Ucase(Trim(strAddInfo)) Then
blnErr = True
strDataInfo = strDataInfo & "前部应包含" & Trim(strAddInfo)
End If
CheckHeadIncChar = blnErr
End Function
'===================================================================
'= Function : CheckEnum
'= Time : Created At 2006-5-5
'= Input : 数据项,数据项名称,附加信息
'= Output : 出错处理
'= Description : 校验数据枚举类型(不区分大小写)
'===================================================================
Function CheckEnum(strDataStr,ByRef strDataInfo,ByRef strAddInfo)
Const CONST_DIVIDER = ","
Dim blnErr : blnErr = False
Dim i
Dim arrTmp
Dim strGetData,strGetAddInfo
blnErr = True
strGetData = Lcase(Trim(strDataStr))
strGetAddInfo = Lcase(Trim(strAddInfo))
arrTmp = split(strGetAddInfo,CONST_DIVIDER)
For i = LBound(arrTmp) To UBound(arrTmp)
If arrTmp(i) = strGetData Then
blnErr = False
Exit For
End If
Next
strDataInfo = strDataInfo & "( " & strDataStr &" )提交值不在允许的范围"
CheckEnum = blnErr
End Function
'===================================================================
'= Function : CheckEnumMore
'= Time : Created At 2006-5-5
'= Input : strDataStr : form data
'= strDataInfo : form data clew info
'= strAddInfo : form data check add info fmt
'= fmt: enum data
'= OutPut : strDataInfo :form data clew info
'= Return : Data check error number
'= Description : 校验数据枚举类型(不区分大小写,多选项)
'===================================================================
Function CheckEnumMore(strDataStr, strDataInfo,ByRef strAddInfo)
Const CONST_DIVIDER = ","
Dim blnErr : blnErr = False
Dim i,j
Dim arrTmp
Dim strGetData,strGetAddInfo
Dim arrDataCheck
strGetData = Split(Lcase(Trim(strDataStr)),",")
strGetAddInfo = Lcase(Trim(strAddInfo))
arrTmp = split(strGetAddInfo,CONST_DIVIDER)
'== set a flag to every value of form data
Redim arrDataCheck(UBound(strGetData))
For j = LBound(strGetData) To UBound(strGetData)
arrDataCheck(j) = 1
Next
'== check every value is exist
For j = LBound(strGetData) To UBound(strGetData)
For i = LBound(arrTmp) To UBound(arrTmp)
If arrTmp(i) = Trim(strGetData(j)) Then
arrDataCheck(j) = 0
Exit For
End If
Next
Next
'== check all value is exist
For j = LBound(strGetData) To UBound(strGetData)
If arrDataCheck(j) = 1 Then
blnErr = True
Exit For
End If
Next
CheckEnumMore = blnErr
End Function
'===================================================================
'= Function : CheckInt
'= Time : Created At 2006-5-5
'= Input : 数据项,数据项名称,附加信息
'= Output : 出错处理
'= Description : 校验数据项是否全为阿拉伯数字
'===================================================================
Function CheckInt(strDataStr,ByRef strDataInfo,ByRef strAddInfo)
Dim blnErr : blnErr = False
Dim bolChkFlag
bolChkFlag = RegExpCheck(REG_NUMBER, strDataStr)
If Not bolChkFlag Then
blnErr = True
strDataInfo = strDataInfo & "(" & strDataStr & ")"
End If
strDataInfo = strDataInfo & "必须为整数形式"
CheckInt = blnErr
End Function
'===================================================================
'= Function : CheckPlusInt
'= Time : Created At 2006-5-5
'= Input : 数据项,数据项名称,附加信息
'= Output : 出错处理
'= Description : 校验数据项是否全为正整数
'===================================================================
Function CheckPlusInt(strDataStr,ByRef strDataInfo,ByRef strAddInfo)
Dim blnErr : blnErr = False
Dim bolChkFlag
bolChkFlag = RegExpCheck(REG_PLUS_NUMBER, strDataStr)
If Not bolChkFlag Then
blnErr = True
strDataInfo = strDataInfo & "(" & strDataStr & ")"
End If
strDataInfo = strDataInfo & "必须为正整数形式"
CheckPlusInt = blnErr
End Function
'===================================================================
'= Function : CheckIntZero
'= Time : Created At 2006-5-5
'= Input : 数据项,数据项名称,附加信息
'= Output : 出错处理
'= Description : 校验数据项是否全为阿拉伯数字
'===================================================================
Function CheckIntZero(strDataStr,ByRef strDataInfo,ByRef strAddInfo)
Const PATTERN_INT = "^[0-9]*[1-9][0-9]*$"
Dim blnErr : blnErr = False
Dim bolChkFlag
If strDataStr = 0 Then
CheckIntZero = True
Exit Function
End If
bolChkFlag = RegExpCheck(PATTERN_INT, strDataStr)
If Not bolChkFlag Then
blnErr = True
End If
CheckIntZero = blnErr
End Function
'===================================================================
'= Function : CheckIntArea
'= Time : Created At 2006-5-5
'= Input : strDataStr : form data
'= strDataInfo : form data clew info
'= strAddInfo : form data check add info fmt
'= first value | last value | step
'= OutPut : strDataInfo :form data clew info
'= Return : Data check error number
'= Description : 校验数据项是否在某一数值范围内
'===================================================================
Function CheckIntArea(strDataStr,ByRef strDataInfo,ByRef strAddInfo)
Const PATTERN_INT = "^[0-9]*[1-9][0-9]*$"
Dim blnErr : blnErr = False
Dim bolChkFlag
Dim arrTmp,i
bolChkFlag = RegExpCheck(PATTERN_INT, strDataStr)
If Not bolChkFlag Then
blnErr = True
CheckIntArea = blnErr
Exit Function
End If
arrTmp = Split(strAddInfo,"|")
For i = arrTmp(0) To arrTmp(1) Step arrTmp(2)
If i = Clng(strDataStr) Then
blnErr = False
CheckIntArea = blnErr
Exit Function
End If
Next
CheckIntArea = blnErr
End Function
'===================================================================
'= Function : CheckIntBetween
'= Time : Created At 2006-5-5
'= Input : strDataStr : form data
'= strDataInfo : form data clew info
'= strAddInfo : form data check add info fmt
'= first value | last value | step
'= OutPut : strDataInfo :form data clew info
'= Return : Data check error number
'= Description : 校验数据项是否在某一数值范围内
'===================================================================
Function CheckIntBetween(strDataStr,ByRef strDataInfo,ByRef strAddInfo)
Dim blnErr : blnErr = False
Dim arrTmp,strParameter,intMax,intMin
'== 输入是否为数字
If CheckInt(strDataStr,strDataInfo,strAddInfo) Then
CheckIntBetween = True
Exit Function
End If
strParameter = Split(strAddInfo,",")
intMin = Clng(strParameter(0))
intMax = Clng(strParameter(1))
strDataStr = Clng(strDataStr)
If strDataStr > intMax Or strDataStr < intMin Then
blnErr = True
End If
strDataInfo = strDataInfo & "输入范围必须在 " & intMin & " -- " & intMax & " 之间"
CheckIntBetween = blnErr
End Function
'===================================================================
'= Function : CheckValid
'= Time : Created At 2006-5-5
'= Input : 数据项,数据项名称,附加信息
'= Output : 出错处理
'= Description : 校验数据项是否有非法字符
'===================================================================
Function CheckValid(strDataStr,ByRef strDataInfo,ByRef strAddInfo)
Dim blnErr : blnErr = False
If Instr(strDataStr,"=")>0 Or Instr(strDataStr,"%")>0 Or Instr(strDataStr,chr(32))>0 Or Instr(strDataStr,"?")>0 Or Instr(strDataStr,"&")>0 Or Instr(strDataStr,";")>0 Or Instr(strDataStr,",")>0 Or Instr(strDataStr,"'")>0 Or Instr(strDataStr,",")>0 Or Instr(strDataStr,chr(34))>0 Or Instr(strDataStr,chr(9))>0 Or Instr(strDataStr,"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -