PHP身份证有效期校验(通用)

本文介绍了PHP如何进行身份证有效期的校验。首先,如果身份证有效期是'长期',并且当前年份减去出生年份大于等于46岁,视为有效。接着,如果有效期不是'长期',会与当前服务器时间对比,如果有效期在当前时间之前,标识为已过期;否则,如果在当前时间之后,继续其他判断。
说明:最近项目需求要对用户身份证的有效期验证,但向公安系统或者银联付费请求查询对应信息,
金额成本比较高,每次查询3-5元人民币成本较高,于是需要自行来处理有效期规则和防止有效期、
身份证号码等规则被篡改:

一、首先判断身份证有效期截止日期是否是“长期”,若为长期且当前年份减去身份证号码里出生日期年份>=46(岁)则直接当作未过期来处理(因为仅在年龄>=46时身份证有效期才可能会为“长期”);

二、若有效期截止日期不是长期,则继续和本地服务器当前时间判断,若有效期截止日期在本地服务器当前时间之前,返回过期:

三、若有效期截止日期在本地服务器当前时间之后,继续以下判断:

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后的整数部分 ->(如果直接取到年份:年份-年份不用出10000)

STEP3:若值A与值B不满足以下关系,则有效期无效;

    当A=5时,B<16;

    当A=10时,16≤B≤25;

    当A=20时,26≤B≤45;

    当A=长期时,B>=46;

   
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值