根据身份证号验证用户是否成年
/** * 是否成年 * @param $IDCard * @return int 0 成年,1未成年 */ private function is_adult($IDCard){ $flag = 0; if(strlen($IDCard)==18){ $tyear=intval(substr($IDCard,6,4)); $tmonth=intval(substr($IDCard,10,2)); $tday=intval(substr($IDCard,12,2)); if($tyear>date("Y")||$tyear<(date("Y")-100)){ $flag=0; }elseif($tmonth<0||$tmonth>12){ $flag=0; }elseif($tday<0||$tday>31){ $flag=0; }else{ $day_sum = self::full_year_day($tyear,$tmonth,18); if((time()-mktime(0,0,0,$tmonth,$tday,$tyear))>$day_sum*24*60*60){ $flag=0; }else{ $flag=1; } } }elseif(strlen($IDCard)==15){ $tyear=intval("19".substr($IDCard,6,2)); $tmonth=intval(substr($IDCard,8,2)); $tday=intval(substr($IDCard,10,2)); if($tyear>date("Y")||$tyear<(date("Y")-100)){ $flag=0; }elseif($tmonth<0||$tmonth>12){ $flag=0; }elseif($tday<0||$tday>31){ $flag=0; }else{ $day_sum = self::full_year_day($tyear,$tmonth,18); if((time()-mktime(0,0,0,$tmonth,$tday,$tyear))>$day_sum*24*60*60){ $flag=0; }else{ $flag=1; } } } return $flag; } /** * n周岁的天数 * @param $tyear * @param $tmonth * @return int */ private function full_year_day($tyear,$tmonth,$type=18){ $sum=365*$type; for($i=$tyear+1;$i<$tyear+$type;$i++)//考虑中间年份 { if(self::is_leap_year($i)) $sum++; } if(self::is_leap_year($tyear)&&$tmonth<=2)//考虑初末两年 $sum++; if(self::is_leap_year($tyear+$type)&&$tmonth>=3){ $sum++; } return $sum; } /** * @param $year * @return int 1是闰年,0不是闰年 */ private function is_leap_year($year){ if(($year%4==0&&$year%100!=0)||$year%400==0) return 1; else return 0; }
版权声明:本站所提供的文章、图片等内容均为用户发布或互联网整理而来,仅供学习参考,如有侵犯您的版权,请联系我们客服人员删除。