最近做專案要用到判斷身份證有效資訊,但是又無法呼叫公安系統介面獲取有效期、身份證號碼等資訊,於是在系統中做了如下處理來判斷,來處理有效期規則和防止有效期、身份證號碼等規則被篡改:
1)、首先判斷身份證有效期截止日期是否是「長期」,若為長期且當前年份減去身份證號碼裡出生日期年份》=46(歲)則直接當作未過期來處理(因為僅在年齡》=46時身份證有效期才可能會為「長期」);
2)、若有效期截止日期不是長期,則繼續和本地伺服器當前時間判斷,若有效期截止日期在本地伺服器當前時間之前,返回過期:
3)、若有效期截止日期在本地伺服器當前時間之後,繼續以下判斷:
step1:系統根據「主卡證件有效起始日期」及「主卡證件有效截止日期」欄位的差值計算主卡人持有的是5年/10年/20年/長期/臨時的身份證,記為值a
若「主卡證件有效截止日期」欄位值前4位-「主卡證件有效起始日期」欄位值前4位=5,則a=5;
若「主卡證件有效截止日期」欄位值前4位-「主卡證件有效起始日期」欄位值前4位=10,則a=10;
若「主卡證件有效截止日期」欄位值前4位-「主卡證件有效起始日期」欄位值前4位=20,則a=20;
若「主卡證件有效截止日期」欄位值前4位-「主卡證件有效起始日期」欄位值前4位〉20,則a=長期;
若「主卡證件有效截止日期」欄位值前4位-「主卡證件有效起始日期」欄位值前4位=0或=1,則a=0或=1;
step2:系統根據主卡人的「出生日期」及「主卡證件有效起始日期」計算主卡人辦理身份證時的年齡(周歲),記為值b
b=(「主卡證件有效起始日期」字段值—「出生日期」字段值)/10000後的整數部分
step3:若值a與值b不滿足以下關係,則有效期無效;
當a=5時,b<16;
當a=10時,16≤b≤25;
當a=20時,26≤b≤45;
當a=長期時,b>=46;
當a=0或a=1時,b可為任意值;
step4:當a≠5且a≠10且a≠20且a≠長期且a≠1且a≠0時,則有效期無效;
step5:a=5或a=10或a=20時,若「主卡證件有效起始日期」和「主卡證件有效截止日期」月日不是一一匹配,則有效期無效。
PHP 2種方法判斷身份證是否有效
idnumber judge nativeplace birth gender 這幾個引數看看 url 身份證替換你自己變數 list file get contents compress.zlib url list mb convert encoding list,utf 8 utf 8,gbk,...
判斷我國公民的身份證是否合法
我國公民的身份證號碼特點如下 1 長度為18位 2 第1 17位只能為數字 3 第18位可以是數字或者小寫英文本母x。4 身份證號碼的第7 14位表示持有人生日的年 月 日資訊。例如 511002198808080111或51100219880808011x。請實現身份證號碼合法性判斷的函式。除滿足...
判斷生日和身份證上的生日是否相符
拿到身份證號 var carid document.getelementbyid card value var birthdayvalue document.getelementbyid birthday value 對號碼進行為空驗證 if carid 對號碼進行長度驗證 if carid.len...