
کد php و راهنمای کامل اعتبارسنجی کدملی برای استفاده دز فرم های ووکامرس و سایر فرم های وردپرس
اعتبارسنجی کدملی:
کد ملی شماره ای است 10 رقمی که از سمت چپ سه رقم کد شهرستان محل صدور شناسنامه ، شش رقم بعدی کد منحصر به فرد برای فرد دارنده شناسنامه در شهرستان محل صدرو و رقم آخر آن هم یک رقم کنترل است که از روی 9 رقم سمت چپ بدست می آید. برای بررسی کنترل کد کافی است مجدد از روی 9 رقم سمت چپ رقم کنترل را محاسبه کنیم

اعتبارسنجی صحت کدملی واردشده
از آنجایی که درسیستم کد ملی معمولا قبل از کد تعدادی صفر وجود دارد.(رقم اول و رقم دوم از سمت چپ کد ملی ممکن است صفر باشد) و در بسیاری از موارد ممکن است کاربر این صفرها را وارد نکرده باشد و یا نرم افزار این صفرها را ذخیره نکرده باشد بهتر است قبل از هر کاری در صورتی که طول کد بزرگتر مساوی 8 و کمتر از 10 باشد به تعداد لازم (یک تا دو تا صفر) به سمت چپ عدد اضافه کنید. ساختار کد ملی در زیر نشان داده شده است
1- برای محاسبه رقم کنترل از روی سایر ارقام ، هر رقم را در موقعیت آن ضرب کرده و حاصل را با هم جمع می کنیم.
2- مجموع بدست آمده از مرحله یک را بر 11 تقسیم می کنیم
3- اگر باقیمانده کمتر از 2 باشد ، رقم کنترل باید برابر باقیمانده باشد در غیر اینصورت رقم کنترل باید برابر یازده منهای باقیمانده باشد
مثال : آیا کد 7731689951 یک کد ملی معتبر است؟
حاصل جمع ضرب ارقام 2 الی 10 را در موقعیت آنها محاسبه می کنیم
7*10+7*9+3*8+1*7+6*6+8*5+9*4+9*3+5*2=313
313÷11=28 و R=5
چون باقیمانده برابر 5 و بزرگتر مساوی 2 است پس باید رقم کنترل این کد برابر 6 ( یازده منهای 5 برابر 6)باشد.
با دقت در کد متوجه می شویم که رقم کنترل ورودی برابر 1 است پس کد مورد نظر به عنوان یک کد معتبر قابل قبول نیست.
function check_national_code($code) { if(!preg_match('/^[0-9]{10}$/',$code)) return false; for($i=0;$i<10;$i++) if(preg_match('/^'.$i.'{10}$/',$code)) return false; for($i=0,$sum=0;$i<9;$i++) $sum+=((10-$i)*intval(substr($code, $i,1))); $ret=$sum%11; $parity=intval(substr($code, 9,1)); if(($ret<2 && $ret==$parity) || ($ret>=2 && $ret==11-$parity)) return true; return false; }