地母深渊

为生而活,每时每刻我都不能忘记。

« 雅虎主要股东仍然支持微软收购Z-Blog 1.8 Spirit Build 80605 试用报告 »

身份证校验查询函数。

  修改他人的一段代码,用于查询和校验身份证的正确性和代表的信息。正在考虑加上所在地查询。
<script language="vbscript">
'功能:检查身份证号码
Dim BirthDay, Sex

Function CheckCardId(id)
	Dim arrVerifyCode	'校验码
	Dim Wi			'加权因子
	Dim arrSex		'性别
	arrVerifyCode = Split("1,0,x,9,8,7,6,5,4,3,2", ",")
	Wi = Split("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2", ",")
	arrSex = Split("女,男", ",")

	If Len(id) <> 15 And Len(id) <> 18 Then
		CheckCardId= "身份证号共有 15 码或18位"
		Exit Function
	End If

	Dim Ai			'身份证前17位
	If Len(id) = 18 Then
		Ai = Mid(id, 1, 17)
	ElseIf Len(id) = 15 Then
		Ai = id
		Ai = Left(Ai, 6) & "19" & Mid(Ai, 7, 9)
	End If

	If Not IsNumeric(Ai) Then
		CheckCardId= "身份证除最后一位外,必须为数字!"
		Exit Function
	End If

	Dim strYear		'读取生日年份
	Dim strMonth		'读取生日月份
	Dim strDay		'读取生日日期
	strYear = CInt(Mid(Ai, 7, 4))
	strMonth = CInt(Mid(Ai, 11, 2))
	strDay = CInt(Mid(Ai, 13, 2))
	BirthDay = Trim(strYear) + "-" + Trim(strMonth) + "-" + Trim(strDay)
	If IsDate(BirthDay) Then
		If DateDiff("yyyy",Now,BirthDay)<-140 or cdate(BirthDay)>date() Then
			CheckCardId= "身份证日期输入错误!"
			Exit Function
		End If
		If strMonth > 12 Or strDay > 31 Then
			CheckCardId= "身份证月份输入错误!"
			Exit Function
		End If
	Else
		CheckCardId= "身份证日期输入错误!"
		Exit Function
	End If

	Sex = arrSex(Right(Ai, 1) Mod 2)

	Dim i, TotalmulAiWi	'加权求和
	For i = 0 To 16
		TotalmulAiWi = TotalmulAiWi + CInt(Mid(Ai, i + 1, 1)) * Wi(i)
	Next

	Dim modValue		'加权求和取余
	modValue = TotalmulAiWi Mod 11

	Dim strVerifyCode	'校验码
	strVerifyCode = arrVerifyCode(modValue)
	Ai = Ai & strVerifyCode
	CheckCardId = Ai

	If Len(id) = 18 And id <> Ai Then
		CheckCardId= "身份证输入错误!"
		Exit Function
	End If
End Function

msgbox CheckCardId("220122198409181347") & "," & BirthDay & "," & Sex
</script>

  • 相关文章:
  • quote 1.黑疤
  • 做成html的吧,随时放在u盘里都可以用到
    江海客 于 2008-5-31 19:52:10 回复
    没问题,正在做地区信息。

  • 2008-5-31 19:29:59 [Report Spam]  回复该留言

发表评论:



  

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表