• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
بررسی صحت کد ملی
#1
.سلام به همه !
یه تابع برا بررسی صحت کد ملی نوشتم . می خواستم بدونم روش بررسی کد ملی درسته ؟
کد پی‌اچ‌پی:
function melliCode($code){
        if (! 
is_string $code ) || strlen $code ) != 10 || strpos($code,'000')===|| in_array $code, [
                
'0000000000','1111111111','2222222222','3333333333','4444444444','5555555555','6666666666','7777777777','8888888888','9999999999'
                
] )) {
                    return 
false;
                }
                
$i 0;
                while ( 
$i 10 ) {
                    if (
in_array $code [$i], ['1','2','3','4','5','6','7','8','9','0'] )) {
                        
$chk += $code [$i] * (10 $i);
                    }
                    else {
                        break;
                    }
                    
$i ++;
                }
                if (
$i != 10) {
                    return 
false;
                }
                
$chk = ($chk $code [9]) % 11;
                if (
$chk >= 2) {
                    
$chk 11 $chk;
                }
                if (
$chk != $code [9]) {
                    return 
false;
                }
    
    return 
true;

  پاسخ
تشکر شده توسط :
#2
http://www.rezaonline.net/blog/php-funct...-code.html
با این مقایسه کن .
کد پی‌اچ‌پی:
function checkNationalCode($code='')
{
    
$code = (string) preg_replace('/[^0-9]/','',$code);
    if(
strlen($code)>10 or strlen($code)<8)
        return 
false;
    
    if(
strlen($code)==8)
        
$code "00".$code;
        
    if(
strlen($code)==9)
        
$code "0".$code;
    
    
$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;

  پاسخ
تشکر شده توسط : mohammadhosain
#3
یعنی شماره ملی هایی که همه ارقامشون یکسان هست مثل 1111111111 هم معتبرن ؟ تو بعضی سایتا دیدم که شماره ملی های که همه ارقامشون مثل هم هستن رو معتبر نمی دونن!
  پاسخ
تشکر شده توسط :
#4
چندسال پیش تو جریان کاری که با ثبت احوال داشتم ازشون شنیدم که کد ملی یه پترن خاص داره. چند رقم اولش مربوط به شهر و استانه و باقی عددهاش هم یه منطق به خصوصی داره که الان جزئیاتش یادم نیست. مثلن تا اوجایی که یادمه گفتن رقم آخر هیچ کد ملی ای ۲ یا ۶ نیست (شاید هم دو عدد دیگه رو گفتن). با یه استعلام از ثبت احوال می تونی بیشتر در جریان قرار بگیری.
  پاسخ
تشکر شده توسط : mohammadhosain
#5
یه نگاهی به کد سایت یارانه ها بنداز:

http://refahi.ir

فکر کنم الگوریتمشون کامل باشه.... client-side هم هست فکرنم
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : mohammadhosain
#6
(۱۳۹۳ مهر ۱۵, ۰۷:۰۱ ب.ظ)mohammadhosain نوشته: یعنی شماره ملی هایی که همه ارقامشون یکسان هست مثل 1111111111 هم معتبرن ؟ تو بعضی سایتا دیدم که شماره ملی های که همه ارقامشون مثل هم هستن رو معتبر نمی دونن!

سلام خدمت دوستان
مثل اینکه کد ملی با ده تا یک معتبر هست.

http://www.refahi.ir/assets/compressed/j...8453c8.php

https://www.khabaronline.ir/news/1219730/%D8%AD%D8%B1%D9%81-%D9%87%D8%A7%DB%8C-%D8%AE%D9%88%D8%A7%D9%86%D8%AF%D9%86%DB%8C-%D9%85%D8%B1%D8%AF%DB%8C-%DA%A9%D9%87-%DA%A9%D8%AF-%D9%85%D9%84%DB%8C-%D8%A7%D8%B4-%DB%B1%DB%B1%DB%B1%DB%B1%DB%B1%DB%B1%DB%B1%DB%B1%DB%B1%DB%B1-%D8%A7%D8%B3%D8%AA-%D9%85%D8%B5%DB%8C%D8%A8%D8%AA-%D9%87%D8%A7-%DA%A9%D8%B4%DB%8C%D8%AF%D9%87-%D8%A7
  پاسخ
تشکر شده توسط : Y.P.Y


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان