⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inc_data_check.asp

📁 1] 校友多种方式注册认证[直接注册,答问注册,认证注册] 2] 校友论坛 小巧而实用的论坛,支持UBB标签,快速回复,帖子搜索,灵活的将帖子置顶,设置精华 3] 校友相册 相片上传[方便上传
💻 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 + -