| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1738 人关注过本帖
标题:如何实现注册验证身份证是否正确?
只看楼主 加入收藏
lzlcn
Rank: 2
来 自:广东网络公司
等 级:论坛游民
帖 子:100
专家分:10
注 册:2007-5-18
结帖率:100%
收藏
 问题点数:0 回复次数:6 
如何实现注册验证身份证是否正确?
内容如题
谢谢
搜索更多相关主题的帖子: 身份证 验证 注册 
2007-05-19 17:31
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
[CODE]<html>
<head>
<title>身份证验证</title>
<script language="javascript">
var idCard;//保存身份证号
function VerifyBirthDay()//验证身份证中的出生日期
{
var BirthDay=idCard.substr(6,8);//取得出生日期
var BYear=BirthDay.substring(0,4);//取年份
var BMonth=BirthDay.substring(4,6);//取月份
var BDay=BirthDay.substring(6,8);//取日期
//判断出生日期是否为数字
if(!IsNum(BYear)||!IsNum(BMonth)||!IsNum(BDay))
{
return false;
}

//以下判断出生日期是否正确
if(BYear<=0)
{
return false;
}
if(BMonth<=0||BMonth>12)
{
return false;
}
if(BDay<=0||BDay>31)
{
return false;
}
return true;
}

//判断是否为数字的方法
function IsNum(val)
{
var isNum=false;
try
{
var TNum=eval(val+1);
isNum=true;
}
catch(e)
{
isNum=false;
}
return isNum;
}

//主要验证执行方法
function VerifyIDCard()
{
idCard=this.IDCard.value;
if(idCard.length>18||idCard.length<18)
{
alert('身份证长度错误[必须为18位身份证号]');
}
if(!VerifyBirthDay())
{
alert('出生年月日不正确');
}
}
</script>
</head>
<body>
<input name="IDCard" type="text">请输入身份证号码<br>
<input type="button" onClick="VerifyIDCard();" value="验证身份证号码" >
</body>
</html>[/CODE]

[此贴子已经被作者于2007-5-19 18:22:43编辑过]

2007-05-19 18:18
lzlcn
Rank: 2
来 自:广东网络公司
等 级:论坛游民
帖 子:100
专家分:10
注 册:2007-5-18
收藏
得分:0 
版主,此代码有漏洞的,如果全输入18位1,验证会通过
还是谢谢,同样帮了我

[此贴子已经被作者于2007-5-20 1:19:53编辑过]


弃我去者昨日之日不可留,乱我心者今日之日多烦忧。
2007-05-20 01:18
yuhuiyuan
Rank: 2
等 级:禁止访问
帖 子:56
专家分:45
注 册:2007-4-20
收藏
得分:0 

Function IDCheck(e)
IDCheck = true
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", ",")
Checker = Split("1,9,8,7,6,5,4,3,2,1,1", ",")
If Len(e) < 15 Or Len(e) = 16 Or Len(e) = 17 Or Len(e) > 18 Then
'IDCheck= "身份证号共有 15 码或18位"
IDCheck = False
Exit Function
End If
Dim Ai
If Len(e) = 18 Then
Ai = Mid(e, 1, 17)
ElseIf Len(e) = 15 Then
Ai = e
Ai = Left(Ai, 6) & "19" & Mid(Ai, 7, 9)
End If
If Not IsNumeric(Ai) Then
'IDCheck= "身份证除最后一位外,必须为数字!"
IDCheck = False
Exit Function
End If
Dim strYear, strMonth, 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
'IDCheck= "身份证输入错误!"
IDCheck = False
Exit Function
End If
If strMonth > 12 Or strDay > 31 Then
IDCheck = False
'IDCheck= "身份证输入错误!"
Exit Function
End If
Else
'IDCheck= "身份证输入错误!"
IDCheck = False
Exit Function
End If
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
IDCheck = Ai
If Len(e) = 18 And e <> Ai Then
'IDCheck= "身份证号码输入错误!"
IDCheck = False
Exit Function
End If
End Function
这个只是一个判断函数,不知道合不合你的要求


asp入门基础:http://www.  
2007-05-20 12:59
lq7350684
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5089
专家分:98
注 册:2006-11-6
收藏
得分:0 
function isIdCardNo(num)
{
if (isNaN(num)) {alert("输入的不是数字!"); return false;}
var len = num.length, re;
if (len == 15)
re = new RegExp(/^(d{6})()?(d{2})(d{2})(d{2})(d{3})$/);
else if (len == 18)
re = new RegExp(/^(d{6})()?(d{4})(d{2})(d{2})(d{3})(d)$/);
else {alert("输入的数字位数不对!"); return false;}
var a = num.match(re);
if (a != null)
{
if (len==15)
{
var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
}
else
{
var D = new Date(a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
}
if (!B) {alert("输入的身份证号 "+ a[0] +" 里出生日期不对!"); return false;}
}
return true;
}
2007-05-21 09:19
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 
以下是引用lzlcn在2007-5-20 1:18:14的发言:
版主,此代码有漏洞的,如果全输入18位1,验证会通过
还是谢谢,同样帮了我

我十分同情版主


2007-05-21 09:44
kidy2005
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2007-4-18
收藏
得分:0 

比如:长沙身份证的前4位为4301,广州的身份证前4位为4001,那如何判断该人填写的身份证是不是属于长沙或者广州或其它城市呢?
当我在城市选择广州之后,在身份证位置输入6929,如何做出这种身份证号码填写对错的判断呢?要用到数据库吗?如何验证全国这么多城市身份证填写是否对错呢?


恒天装饰网:http://www.
2007-05-22 11:47
快速回复:如何实现注册验证身份证是否正确?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033945 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved