用ASP实现身份证验证
时间:2013-03-17 14:19:55浏览:5082
<%
'身份证校验
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上传文件大小限制的调整
- Linux文章
- PHP文章
- 随机文章
- Linux中的find(-atime...
- mysql的expire_logs_...
- PHP 扩展 libsodium s...
- Linux下利用find和cp实现筛...
- 使用mysqldump命令导出备份m...
- Linux系统如何设置开机自动运行脚...
- Linux上实现秒级执行的定时任务
- shell echo -e 颜色输出
- Linux下通过grep查找指定的进...
- 解决执行脚本报syntax erro...
发表评论
昵称: 验证码: