ASP.net下的身份证验证程序

大可山人
博客专家认证
2003-05-22 08:19:58
<%@ page language="VB" debug="true" %>
<Script Language="VB" Runat="Server">
'---------------------------------------
'作者:朱继山 Email:zjs@dagongbao.com
'如输入15位身份证号可产生18位带校检号的身份证号。
'由于没有各省市的前六位代码库,所以未能进行相关验证,如哪位仁兄有此库,发给老朽一份。或将此贴完善后供大家共享一下。
'---------------------------------------
Sub CheckSID(sender As Object, e As ServerValidateEventArgs)
Dim arrVerifyCode() As String = {"1","0","x","9","8","7","6","5","4","3","2"}
Dim Wi() As byte= {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}
Dim Checker() As byte = {1,9,8,7,6,5,4,3,2,1,1}

If Len(e.Value) < 15 or Len(e.value)=16 or Len(e.value)=17 or Len(e.value)>18 Then
sender.ErrorMessage = "身份证号共有 15 码或18位"
e.IsValid = False
Exit Sub
End If

Dim Ai as String
if len(e.Value)=18 then
Ai= mid(e.Value,1,17)
elseif len(e.value)=15 then
Ai=e.value
Ai=left(Ai,6) & "19" & mid(Ai,7,9)
end if
if Not IsNumeric(Ai) then
sender.ErrorMessage = "身份证除最后一位外,必须为数字!"
e.IsValid = False
Exit Sub
end if
dim strYear,strMonth,strDay
strYear=Cint(Mid(Ai,7,4))
strMonth=Cint(Mid(Ai,11,2))
strDay=Cint(Mid(Ai,13,2))
Dim BirthDay as DateTime=DateSerial(strYear,strMonth,strDay)
if isDate(BirthDay) then
if DateDiff(DateInterval.Year,Now,BirthDay)<-140 or format(BirthDay,"yyyyMMdd")>format(now,"yyyyMMdd") then
sender.ErrorMessage = "身份证输入错误!"
e.IsValid = False
Exit Sub
end if
if strMonth>12 or strDay>31 then
sender.ErrorMessage = "身份证输入错误!"
e.IsValid = False
Exit Sub
end if
else
sender.ErrorMessage = "身份证输入错误!"
e.IsValid = False
Exit Sub
end if
dim i,TotalmulAiWi as Integer
for i=0 to 16
TotalmulAiWi=TotalmulAiWi + Cint(mid(Ai,i+1,1))*Wi(i)
Next
dim modValue as byte
modValue=TotalmulAiWi Mod 11
dim strVerifyCode as String
strVerifyCode=arrVerifyCode(modValue)
Ai=Ai & strVerifyCode
newSID.text=Ai

if len(e.Value)=18 and e.value<>Ai then
sender.ErrorMessage = "身份证号码输入错误!"
e.IsValid = False
Exit Sub
end if
End Sub
</Script>
<Html>
<Body>
<Form Runat="Server">
请输入身份证号码:<Asp:TextBox Runat="Server" Id="SID" />
<Asp:CustomValidator Runat="Server" Id="CustomValidator1"
ControlToValidate="SID" OnServerValidate="CheckSID" /><BR>
新18位身份证号码:<Asp:TextBox Runat="Server" Id="newSID"/>
<Br><Br>
<Asp:Button Runat="Server" Text="确定" />
</Form>
</Body>
</Html>
...全文
75 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hackson 2003-05-22
  • 打赏
  • 举报
回复
哈哈......不错.我已经备份了一个.以备将来之用.谢谢!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧