导航
  • 主页
  • API 调用
  • 基础类
  • 控件与界面
  • 数据库相关
  • DataWindow
  • 项目管理
  • Web 应用
  • 脚本语言

关于身份证的验证

didada2003 2003-12-27 02:54:43
用pb怎么验证身份证号码有没有错误?
...全文
84 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxgdwz5275 2003-12-27
在网页上面找“管理”
输入你的密码,给谁的分数 点击“确定”
回复
didada2003 2003-12-27
哦,已经知道了怎么结贴。
回复
didada2003 2003-12-27
谢谢了。还可以。
怎么结贴?
回复
ld2099 2003-12-27
这是我从陶清论坛上下来的,你看看行不行。

身份证号码已经包含了每个人的出生年月日及性别等方面的信息(对于老式的15位身份证而言,7-12位即个人的出生年月日,而最后一位奇数或偶数则分别表示男性或女性。如某人的身份证号码为420400700101001,它的7-12位为700101,这就表示该人是1970年元月1日出生的,身份证的最后一位为奇数1,这就表示该人为男性;对于新式的18位身份证而言,7-14位代表个人的出身年月日,而倒数第二位的奇数或偶数则分别表示男性或女性)。根据身份证号码的这些排列规律,结合的有关函数,我们就能实现利用身份证号码自动输入出生年月日及性别等信息的目的
//中国身份证只有15位和18位,
//以下程序通过判断身份证的位数、出生年月、性别和校验码来判断其正确性
//获取校验码的函数f_get_sfzvalid(string a_sfz)
//判断是否是身份证函数f_checksfz(string as_sfz)内容如下
string ls_date,ls_xb
string ls_birth,ls_sex,ls_return
choose case len(as_sfz)
case 15//15位的身份证
ls_date="19"+mid(as_sfz,7,2)+"-"+mid(as_sfz,9,2)+"-"+mid(as_sfz,11,2)//获得出生日期
if pos("13579",mid(as_sfz,15,1))>0 then//获得性别
ls_xb="男"
else
ls_xb="女"
end if
if not isdate(ls_date) then
messagebox("提示信息","所输入的号码不是身份证号码")
return -1
else
return 0
end if
case 18//18位的身份证
ls_date=mid(as_sfz,7,4)+"-"+mid(as_sfz,11,2)+"-"+mid(as_sfz,13,2)
if pos("13579",mid(as_sfz,17,1))>0 then
ls_xb="男"
else
ls_xb="女"
end if
if mid(as_sfz,18)<>f_get_sfz_validbh(mid(as_sfz,1,17)) then //判断校验码
messagebox("提示信息","所输入的身份证号码第十八位校验码不对.")
return -1
end if
if not isdate(ls_date) then//判断日期是否正确
messagebox("提示信息","所输入的号码不是身份证号码")
return -1
else
return 0
end if
case else
return -1
end choose
//获取校验码函数f_get_sfz_validbh(string a_sfz)
string ls_sfz
integer i,li_ai,li_wi,li_sum,li_mod,li_result
ls_sfz=a_sfz
if len(ls_sfz)=15 or len(ls_sfz)=17 then
if len(ls_sfz)=15 then
ls_sfz=mid(ls_sfz,1,6)+"19"+mid(ls_sfz,7,9)
end if
for i=2 to 18
li_ai=integer(mid(ls_sfz,19 -i,1))
li_wi=mod(2^(i - 1),11)
li_sum=li_sum + li_ai*li_wi
next
li_mod=mod(li_sum,11)
li_result=12 - li_mod
if li_result>=10 then
if li_result=10 then
return "X"
else
li_result=li_result - 11
return string(li_result)
end if
else
return string(li_result)
end if
else
return "E"
end if

回复
CodeMagic 2003-12-27
是居民身份证么?你说没错误它就真的没错误,你能说算么?
回复
didada2003 2003-12-27
我用一个sle文本来输入身份证号码,通过一个按钮来验证是否有什么错误。前几位是地区,往后是生日,如果生日那几位数字输入错误,或者与他输入的出生年月不符,则会有提示,等等。谢谢!
回复
Thinkinger 2003-12-27
请先说明身份证号码的各个部分意义,才能帮你啊!
回复
发动态
发帖子
PowerBuilder
创建于2007-09-28

814

社区成员

PowerBuilder 相关问题讨论
申请成为版主
社区公告
暂无公告