万企互联-专注高端网站建设
扫描关注万企互联微信公众账号

扫一扫微信二维码

asp实现判断身份证号码是否正确的方法

编程代码2022/2/15 360

在网页中经常需要输入正确的身份证号码,只能通过程序来验证身份证格式。根据身份证号码生成的原理,就是验证后面几位就可以了。


<%
'身份证校验
Function CheckidCard(idcard)
Dim LenCard
LenCard=Len(idcard)
'判断身份证长度
if not (LenCard = 15 Or LenCard = 18) Then
CheckidCard= "身份证长度不是15位或18位"
exit Function
End If
'变量声明区
dim WeightedFactor,VerifyCode,area,birthday,lastnum,Ai,i,Total,Modnum,sex,age,province,sexNum,provinceID
WeightedFactor = array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2) '为前17位各个数字对应的加权因子
VerifyCode = array(1,0,"x",9,8,7,6,5,4,3,2) '通过模得到的校验码
area="11北京,12天津,13河北,14山西,15内蒙古,21辽宁,22吉林,23黑龙江,31上海,32江苏,33浙江,34安徽,35福建,36江西,37山东,41河南,42湖北,43湖南,44广东,45广西,46海南,50重庆,51四川,52贵州,53云南,54西藏,61陕西,62甘肃,63青海,64宁夏,65新疆,71台湾,81香港,82澳门,91国外"
'判断地区
provinceID=left(idcard,2)
  if instr(area,provinceID)=0 then
    CheckidCard= "身份证头2位错误"
    exit function
  end If
'补齐15位卡号
if LenCard= 15 then  idcard=left(idcard,6) & "19" & mid(idcard,7,9)
'判断生日
birthday= mid(idcard,7,4)+"-"+mid(idcard,11,2)+"-"+mid(idcard,13,2)
if not  isdate(birthday) then
CheckidCard=  "生日非法"
exit function
end If
if datediff("yyyy",cdate(birthday),date())<18 then
     CheckidCard= "你还未满18岁,不可能有身份证的"
      exit function
end If
'判断检验码
  if len(idcard)=18 then
lastnum=int(right(idcard,1)) 'lastnum为18位身份证最后一位
   Ai=left(idcard,17) 'Ai为除最后一位字符的字串
    For i = 0 To 16
     Total = Total + cint(Mid(Ai,i+1,1)) * WeightedFactor(i) 'Total前17位数字与对应的加权因子积的和
    Next
    Modnum=total mod 11 '此数为模,total除以11后的余数
    if VerifyCode(Modnum)<>lastnum then
     CheckidCard= "最后一位校验码不对"
     exit function
    end if
  end If
'计算性别
sexNum=mid(idcard,17,1)
sex="男性"
if   (sexNum mod 2) =0 then sex="女性"
'计算年龄
age=datediff("yyyy",cdate(birthday),date())
'计算省份
province=mid(area,instr(area,provinceID)+2,3)
province=replace(province,",","")
CheckidCard= "恭喜,身份证通过校验<br/>" & "您为:" & sex & ",来自于:" & province & ",生日为:" & birthday
End Function
%>
文章关键词
asp
身份证
万企互联 咸阳网站建设 万企微信 IDC主机测评 域名转发系统 IP地址查询 万企工具 超越彼岸BEYOND 六佰号MSDN系统 TOP图标库 六百号技术