我写了一个ID号验证类php小白,写得不好,欢迎大家给我更多的评论和建议. ID号分为四个部分,第一部分是地址代码的前6位数字,7 -14位数字是出生日期,15-17位数字是同一天在同一天出生的男孩的奇数位置,女孩是偶数,第18位是校验码,校验码的计算是前17位数字乘以其相应位置. 将上述加权因子值相加,得出的总和为其余的11位php号码验证,则根据其余部分通过转换表获得第18个校验码值. 以下是具体的实现代码:
header("Content-type: text/html; charset=utf-8");
date_default_timezone_set("PRC");
class Check{
//判断长度
private function judgelen($idcard){
if(strlen($idcard)==15){
return true;
}else if(strlen($idcard)==18){
return true;
}else{
return false;
}
}
//删除空格
function trimall($str)
{
$str_pre=array(" "," ","\t","\n","\r");
$str_later=array("","","","","");
return str_replace($str_pre,$str_later,$str);
}
//校验地址码
private function checkAddr($idcard){
$addrcode="\"".substr($idcard,0,6)."\"";
$cmd="find /c ".$addrcode." ./cityId.txt";//该文件是全国各地对应的地址码
//echo `find /c "610404" ./cityId.txt`;
if($this->trimall(shell_exec(trim($cmd)))=="----------./CITYID.TXT:0"){
return false;
}else{
return true;
}
}
//判断出生日期
private function checkBorn($idcard){
$borncode=substr($idcard,6,8);
if((strtotime($borncode)?0:-1)==-1)
return false;
else
return true;
}
//判断校验码
private function checkCode($idcard){
$sum=0;
$check_array = array("0"=>1,"1"=>0,"2"=>'X',"3"=>9,"4"=>8,"5"=>7,"6"=>1,"7"=>5,"8"=>4,"9"=>3,"10"=>2,);//X对应的换算表
$ai_array = str_split($idcard,1);
$wi = array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);//各位置上对应的加权因子
for($i=0;$i
$sum+=$ai_array[$i]*$wi[$i];
}
$avg=$sum;
if($check_array[$avg]==array_pop($ai_array)){
return true;
}else{
return false;
}
}
function checkid($idcard){
if($this->judgelen($idcard)){
if($this->checkAddr($idcard)){
if($this->checkBorn($idcard)){
if($this->checkCode($idcard)){
echo "验证成功";
}else{
echo "校验码验证失败";
}
}else{
echo "日期验证失败";
}
}else{
echo "地址码验证失败";
}
}else{
echo "长度验证失败";
}
}
}
?>
通过js正则化验证第二代号码的详细说明
js正则化,以实现对第二代号数字校验码的验证. 排列顺序从左到...
成为牛XX号码验证类(支持15位和18位数字)
原始信息: 设置母牛XX ID号验证类(支持15位和18位数字)#region是受保护的合法中文ID号bool IsChineseID(){if(str.Length == 1 ... <
基于struts2框架-自定义ID卡号验证器
自定义步骤: 1.定义验证器类: >自定义验证器需要实现Validator接口. >您可以选择继承ValidatorSupport或FieldValidato ...
详细的Shrio授权验证
所谓的授权是控制您是否可以访问特定资源. 例如,您可以访问页面文件夹下的jsp页面,但是不能访问页面文件夹下的admin文件夹下的jsp页面. 在授权中,包含三个核心元素: 权限,角色php号码验证,用户...
预浸料和低料的详细说明;匹配和低位;所有函数都在php正则表达式中
php正则表达式中的函数我们之前已经为每个人制作了preg_match函数. 我相信每个人都知道这一点,那么在PHP正则表达式中preg_match_all函数的具体用途是什么?今天我们将带您了解php Regular ...
详细的正则表达式以及ID号和lpar的验证; JavaScript,Regex和rpar;
简而言之,在进行用户实名验证时,经常使用ID编号的正则表达式和验证方案. 本文列出了两种验证方案. 您可以根据项目的实际情况选择合适的方案. ID号表示居民ID号,正确. 正式名称应为&q ...
号码验证js程序
最近注册了一个网站,实际上让我输入了我的个人ID号,ID号是个人信息,我怎么告诉你?输入正确的ID号没有问题. 告诉我ID号码有误,您怎么知道?所以,我搜索了ID号...
输入表格的手机号码,号码验证
...
Python re模块(正则表达式)分组和断言的详细说明
正则表达式分组. 断言的详细解释提示: 阅读本文需要一定基础的正则表达式. 正则表达式中的断言似乎是一种高级应用程序,不是因为它很困难,而是因为它的概念更加抽象. 这很容易理解,让我们来解释一下当今的流行菜肴. 如果...
c&plus; &加;向量使用
1. 包含头文件: 1 #include 2.声明和初始化: 首先std :: vector ; // in ...的空向量
阅读“ CODE”第14〜20章
14. 反馈和触发振荡器可以独立连续地打开和关闭,而无需人工干预. 所有计算机都依靠某个振荡器来同步其他组件. 当两个开关都断开时当电路具有两个稳定状态时,这种电路称为触发器. 触发器有一个存储器...
查看WCF会话会话(9)
转载的地址: 每个客户端在服务器上都有自己独立的数据存储区,彼此之间不相关,就好像A和服务器正在分别交谈...
[行业交流] 2016 TiD质量竞争力会议-从移动互联网测试到质量转变的道路
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-223400-1.html