sohil79 171 ارسال شده در اردیبهشت 20، 1396 گزارش اشتراک گذاری ارسال شده در اردیبهشت 20، 1396 در اکثر پروژه های بزرگ که دارای محوریت ثبت نام کاربر هستند , وارد کردن صحیح ک ملی بسیار مهم و الزامی می باشد . شاید برایتان جالب باشد که بدانید کد ملی 10 رقمی , دارای الگوریتم خاصی می باشد و براحتی می توان کد ملی واقعی را از کد ملی جعلی و یا همان غیر واقعی تشخیص داد . به صورت جاوا function vmsNationalCode(input) { if (!/^\d{10}$/.test(input) || input=='0000000000' || input=='1111111111' || input=='2222222222' || input=='3333333333' || input=='4444444444' || input=='5555555555' || input=='6666666666' || input=='7777777777' || input=='8888888888' || input=='9999999999') return false; var check = parseInt(input[9]); var sum = 0; var i; for (i = 0; i < 9; ++i) { sum += parseInt(input[i]) * (10 - i); } sum %= 11; return (sum < 2 && check == sum) || (sum >= 2 && check + sum == 11); } برای فراخوانی تابع بالا میتوانید به صورت زیر عمل کنید : ( به عنوان مثال میخواهیم کد ملی 0011499613 را بررسی کنیم ) : vmsNationalCode('0011499613'); حال اگر کد ملی اشتباه باشد False و اگر صحیح باشد True برگردانده می شود . تابع php : function vmsNationalCode($input) { if (!preg_match("/^\d{10}$/", $input) || $input=='0000000000' || $input=='1111111111' || $input=='2222222222' || $input=='3333333333' || $input=='4444444444' || $input=='5555555555' || $input=='6666666666' || $input=='7777777777' || $input=='8888888888' || $input=='9999999999') { return false; } $check = (int) $input[9]; $sum = array_sum(array_map(function ($x) use ($input) { return ((int) $input[$x]) * (10 - $x); }, range(0, 8))) % 11; return ($sum < 2 && $check == $sum) || ($sum >= 2 && $check + $sum == 11); } برای فراخوانی تابع بالا میتوانید به صورت زیر عمل کنید : ( به عنوان مثال میخواهیم کد ملی 0011499613 را بررسی کنیم ) : vmsNationalCode('0011499613'); حال اگر کد ملی اشتباه باشد False و اگر صحیح باشد 1 برگردانده می شود . لینک به دیدگاه به اشتراک گذاری در سایت های دیگر More sharing options...
پست های پیشنهاد شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.