Archive for 6月, 2008

javascript实现身份证号码的验证

星期三, 6月 4th, 2008

整理了一份javascript对身份证进行验证的程序。

源文件在: http://618119.com/docs/gis/shenfenzheng.html

javascript 代码为:
function getName(code){
var name=xzqh[code];
if(name==null){
return name;
}
//如果不是00结尾的,则补上市名称,659000例外 429000,469000
if(code%100 != 0 && (code-code%100)!=659000 && (code-code%100)!=429000 && (code-code%100)!=469000){
var cityName=xzqh[(code-code%100)];
if(cityName.length>1){//过滤掉只有一个字的“县”
name=cityName+name;
}
}
//如果不是0000结尾的,再补上省名称
if(code%10000 != 0){
name=xzqh[(code-code%10000)]+name;
}
return name;
}

function genData(){
var str=”";
for(code in xzqh){
//整理成竖线分隔的每行一条记录
str+=  “”+code  +”|” +getName(code) +”\n”;
}
document.getElementById(”soapres”).value=str;
}

function checkId(){
var code=document.getElementById(”idCode”).value;
if(code==null || ( code.length!=15 && code.length!=18)){
alert(”请输出正确长度的身份证号码!”);
return;
}

var xzqhCode=code.substr(0,6);
var xzqhName=getName(xzqhCode);

//先判断行政区划信息
if(xzqhName==null){
alert(”没有该身份证号码的地区信息,很可能是假身份证号码!”);
return;
}
//再判断是否都是数字和X.
for(var i=0;i<code.length;i++){
if(i<17){
if(code.charAt(i)>”9″ || code.charAt(i)<”0″){
alert(”你输入的身份证号码有误,可能是假身份证号码!”);
return;
}
}

if(i==17){//盘判断第17位
if(! ( (code.charAt(i) >= “0″ && code.charAt(i) <= “9″ )|| code.charAt(i)==’X’ || code.charAt(i)==’x') ){
alert(”你输入的身份证号码有误,可能是假身份证号码!”);
return ;
}
}
}

var year=1900;//出生年
var month=1;//出生月
var day=1;//出生日
var age=30;//年龄
var sex=”男”;//性别
var code15=”";//15位身份证
var code18=”";//18位身份证
var verify=”x”;//校验位
//按15位进行判断
if(code.length==15){
year=1900+parseInt(code.substr(6,1))*10+parseInt(code.substr(7,1));
month=parseInt(code.substr(8,1))*10+parseInt(code.substr(9,1));
if(month>12){
alert(”出生月份有错,可能是假身份证号码!”);
return ;
}
day=parseInt(code.substr(10,1))*10+parseInt(code.substr(11,1));
if(month>31){
alert(”出生日期有错,可能是假身份证号码!”);
return ;
}

var bday=new Date(year,month,day);
if(bday.getFullYear()!=year || bday.getMonth()!=month || bday.getDate()!=day){
alert(”出生年月日有错,可能是假身份证号码!”);
return ;
}

sex=parseInt(code.substr(14,1));
if(sex%2==1){
sex=”男”;
}
else{
sex=”女”;
}
age=parseInt(new Date().getFullYear())-parseInt(year);
code15=code;
code18=xzqhCode+”19″+code.substr(6,9);
verify=getVerify(code18);
code18=code18+verify;
}
//按18位进行判断
if(code.length==18){
year=parseInt(code.substr(6,1))*1000+parseInt(code.substr(7,1))*100+parseInt(code.substr(8,1))*10+parseInt(code.substr(9,1));
month=parseInt(code.substr(10,1))*10+parseInt(code.substr(11,1));
if(month>12){
alert(”出生月份有错,可能是假身份证号码!”);
return ;
}
day=parseInt(code.substr(12,1))*10+parseInt(code.substr(13,1));
if(month>31){
alert(”出生日期有错,可能是假身份证号码!”);
return ;
}
var bday=new Date(year,month,day);
if(bday.getFullYear()!=year || bday.getMonth()!=month || bday.getDate()!=day){
alert(”出生年月日有错,可能是假身份证号码!”);
return ;
}

if(bday.getTime()>=new Date().getTime()){
alert(”日期非法,可能是假身份证号码!”);
return ;
}
sex=parseInt(code.substr(16,1));
if(sex%2==1){
sex=”男”;
}
else{
sex=”女”;
}
verify=getVerify(code);
var tmpv=code.substr(17,1);
if(tmpv==”X”){tmpv=”x”};
if(verify!=tmpv){
alert(”身份证号码无法通过校验,可能是假身份证号码!”);
return ;
}
age=parseInt(new Date().getFullYear())-parseInt(year);
code18=code;
code15=code.substr(0,6)+code.substr(8,9);
}
var msg=”您输入的身份证号码:\t”+code+”\n\n”
+ “对应15位号码为:\t”+code15+”\n\n”
+ “对应18位号码为:\t”+code18+”\n\n”
+ “所在地区:\t”+xzqhName+”\n\n”
+ “出生日期:\t”+year+”年 “+month+” 月 “+day+” 日\n\n”
+ “年龄:\t”+age+” 岁\n\n”
+ “性别:\t”+sex+”\n”;
alert(msg);
}

function getVerify(id){
var result;
var nNum=eval(id.charAt(0)*7+id.charAt(1)*9+id.charAt(2)*10+id.charAt(3)*5+id.charAt(4)*8+id.charAt(5)*4+id.charAt(6)*2+id.charAt(7)*1+id.charAt(8)*6+id.charAt(9)*3+id.charAt(10)*7+id.charAt(11)*9+id.charAt(12)*10+id.charAt(13)*5+id.charAt(14)*8+id.charAt(15)*4+id.charAt(16)*2);
nNum=nNum%11;
switch (nNum) {
case 0 :
result=”1″;
break;
case 1 :
result=”0″;
break;
case 2 :
result=”x”;
break;
case 3 :
result=”9″;
break;
case 4 :
result=”8″;
break;
case 5 :
result=”7″;
break;
case 6 :
result=”6″;
break;
case 7 :
result=”5″;
break;
case 8 :
result=”4″;
break;
case 9 :
result=”3″;
break;
case 10 :
result=”2″;
break;
}
return result;
}
//–>
</SCRIPT>
<FORM id=”idCard” METHOD=POST ACTION=”">

http://618119.com<br/>
身份证号码验证程序,行政区划数据来源为:最新县及县以上行政区划代码(截止2007年12月31日)<br/> http://www.stats.gov.cn/tjbz/xzqhdm/t20080215_402462675.htm<br/>
请输入15位或18位身份证号码:<br/>
<input type=”text” name=”idCode” id=”idCode” value=”" size=”18″ maxlength=”18″  /><br/>
<input type=”button” name=”codeSubmit” value=”提交” id=”codeSubmit” onclick=”checkId();”/> <br/>

Tags: javascript

Related posts

BEA开放了所有产品的License Keys

星期二, 6月 3rd, 2008

所有的bea产品的License Keys都开放了,

License Keys来源:

http://commerce.--escaped_anchor:2293621d93a909cfd046ff6713918d6c--.com/products/all_products.jsp

下载url为:

MessageQ:

http://download2.bea.com/pub/license/All Products/MessageQ.zip

BEA Tuxedo Products:
http://download2.bea.com/pub/license/All Products/BEA_Tuxedo_Products.zip

BEA WebLogic:
http://download2.bea.com/pub/license/All Products/BEA_WebLogic.zip

BEA AquaLogic:
http://download2.bea.com/pub/license/All Products/BEA_AquaLogic.zip

BEA WebLogic Communications Platform:
http://download2.bea.com/pub/license/All Products/BEA_WebLogic_Communication_Platform.zip

BEA Workshop:
http://download2.bea.com/pub/license/All Products/BEA_Workshop.zip

Blended Open Source Resources:
http://download2.bea.com/pub/license/All Products/Blended_Open_Source_Resources.zip

BEA JRockit:
http://download2.bea.com/pub/license/All Products/BEA_JRockit.zip

其它产品的:

http://download2.bea.com/pub/license/All Products/Other_Products.zip

新的bea jrockit 6.0 下载入口为:

http://commerce.bea.com/products/weblogicjrockit/jrockit_prod_fam-bea.jsp

http://commerce.--escaped_anchor:2293621d93a909cfd046ff6713918d6c--.com/products/weblogicjrockit/accept_terms60-bea.jsp

对应Jrockit安装程序为:

http://download2.--escaped_anchor:2293621d93a909cfd046ff6713918d6c--.com/pub/jrockit/60/jrockit-R27.5.0-jdk1.6.0_03-windows-x64.exe
http://download2.--escaped_anchor:2293621d93a909cfd046ff6713918d6c--.com/pub/jrockit/60/jrockit-R27.5.0-jdk1.6.0_03-windows-ia32.exe
http://download2.--escaped_anchor:2293621d93a909cfd046ff6713918d6c--.com/pub/jrockit/60/jrockit-R27.5.0-jdk1.6.0_03-linux-ia32.bin
http://download2.--escaped_anchor:2293621d93a909cfd046ff6713918d6c--.com/pub/jrockit/60/jrockit-R27.5.0-jdk1.6.0_03-linux-x64.bin
http://download2.--escaped_anchor:2293621d93a909cfd046ff6713918d6c--.com/pub/jrockit/60/jrockit-R27.5.0-jdk1.6.0_03-solaris-sparcv9.bin

Tags: bea, Keys, License

Related posts

缅怀重庆大学李志良教授

星期一, 6月 2nd, 2008

从张姐的QQ空间得知消息,想起这个熟悉的名字。
凭借网络搜索,我回忆起来了,我大学选修过 李志良教授的《诺贝尔奖与创新》,
我也买了李教授自编的课本《诺贝尔奖与创新》,
李教授上课很负责认真,当时他还让我们主动报名上台发表简单的辩论,
这是我在大学里唯一的一次主动有勇气上台对着那么多的同学进行辩论。
题目好像是中国20年内是否能够出现诺贝尔奖获得者,我当时的辩论观点是中国能够出现诺贝尔奖获得者。
这门课是我大学中认真听课了的为数极少的几门课之一,这门选修课我的成绩是90分。
也是在这门课,我才知道中国曾经有过几项科技成果差点获得诺贝尔奖的。
距今已经过去六七年了,中国和诺贝尔奖有关的新闻,最多的估计就是那个82和28的了。

选择主动告别这个世界,是需要极大的勇气的。

哀莫大于心不得不死,哀莫大于身随心逝。

­

李教授一路走好!

Tags: 大学

Related posts