-
September 13th, 2016, 15:10
#1
عضو انجمن
تابع چک کردن صحت کد ملی
سلام و عرض ادب خدمت کاربران گرامی
شاید بسیار برایتان پیش آمده باشد که در پروژه ای لازم هست که شماره ملی کاربر را دریافت کنید
و شاید تا الان تنها اعتبارسنجی که انجام میدادید چک کردن ده رقمی بودن و فقط عدد بودن کد ملی بوده
بنا به دلایلی لازم شد که واقعا صحت کد ملی کاربر را بوسیله آلگوریتمی تشخیص دهیم
قبل از آموزش منابع رو معرفی میکنم
منبع اول : علی آرش
منبع دوم : رضا شیخله
منبع سوم (خودم رفع باگ منابع اول و دوم) : امید آران
در منابع اول و دوم بسیار کامل توضیح داده شده ولی متاسفانه باگی در هر دو کد وجود داره
میشه با وارد کرد عددی مثل 1111111111 این تابع رو دور زد.
ولی بنده اون باگ رو رفع کردم و کامل آماده استفاده هستش
کد PHP:
function CheckNationalCode($code='')
{
$code = (string) preg_replace('/[^0-9]/','',$code);
if(strlen($code)>10 or strlen($code)<8)
return false;
// --- Added by omid Aran ---
$code = str_pad($code, 10, 0, STR_PAD_LEFT);
for($i=0; $i<10; $i++)
$blist[] = str_pad($i, 10, $i, STR_PAD_LEFT);
if(in_array($code, $blist))
return false;
// ------------------------
$list_code = str_split($code);
$last = (int) $list_code[9];
unset($list_code[9]);
$i = 10;
$sum = 0;
foreach($list_code as $key=>$_)
{
$sum += intval($_) * $i;
$i--;
}
$mod =(int) $sum % 11;
if($mod >= 2)
$mod = 11 - $mod;
return $mod == $last;
}
$code = 1231234567;
if(CheckNationalCode($code))
echo 'ok';
else
echo 'err';
-
تعداد تشکر ها ازomid1991 به دلیل پست مفید
armin.rf, hassanshaikhi, itjavani, k-pax, Kaviani, kiava, mibfa, peyman_m, psfa, rayanagostar, rezaonline.net, T.Toosi, Yas-Host, Z.eus
-
September 13th, 2016 15:10
# ADS
-
September 13th, 2016, 19:18
#2
پاسخ : تابع چک کردن صحت کد ملی
این باگ در سایت نیک هم است (:
-
تعداد تشکر ها از mibfa به دلیل پست مفید
-
September 13th, 2016, 23:20
#3
-
تعداد تشکر ها ازrezaonline.net به دلیل پست مفید