当前位置:首页 > 程序&理念 >

用ASP实现身份证验证

时间:2013-03-17 14:19:55浏览:4558 转载


<%
'身份证校验
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
%>
1

上一篇:win2003上安装SQL2000时CD-KEY(序列号)无法验证解决方法
下一篇:Win7系统IIS7.0下ASP上传文件大小限制的调整

发表评论

昵称:  验证码:

关于博主

博主

博主:BlueCode

职业:web程序

简介:2002年开始一直从事Web制作,网站运营,会PHP+MYSQL ASP+MSSQL,微信开发