نمایش نتایج: از شماره 1 تا 8 , از مجموع 8

موضوع: صحت سنجی کد ملی در پی اچ پی

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    عضو انجمن fara_server آواتار ها
    تاریخ عضویت
    Feb 2012
    محل سکونت
    ایران
    نوشته ها
    187
    تشکر تشکر کرده 
    40
    تشکر تشکر شده 
    287
    تشکر شده در
    153 پست

    57 صحت سنجی کد ملی در پی اچ پی

    سلام دوستان
    مطلب زیر رو در سایت استاد کرامتی فر گرامی دیدم و گفتم خالی از لطف نیست اگر برای دوستان هم قرار بدم.در ذیل با نحوه اعتبار سنجی کد ملی کاربر در پی اچ پی آشنا خواهید شد.
    +
    همانطور که می دانید، کد ملی بعنوان یک شناسه ی منحصر به فرد (Unique ID) برای هر ایرانی محسوب می شود. در بعضی سایت ها ممکن است نیاز باشد تا کد ملی کاربر را بگیریم. بنابراین به الگوریتمی نیاز داریم تا بتوانیم از صحت کد ملی وارد شده توسط کاربر مطمئن شویم و در صورتیکه بصورت سهوی و یا عمدی اشتباه وارد شد، بتوانیم عملیات ثبت را متوقف کنیم و به کاربر اخطار دهیم.
    در همین راستا، تابعی در php نوشتم که کد ملی وارد شده را می گیرد و صحت آنرا بررسی می کند. اما قبل از بررسی تابع لازم است توضیحاتی در مورد الگوریتم آن بدهم.

    کد ملی یک شناسه ی 10 رقمی است که اعداد آن به سه دسته تقسیم می شوند:
    1- 3 رقم اول کد محل زندگی
    2- 6 رقم بعدی کد منحصر به فرد شخص
    3- رقم آخر عدد کنترل (Validation Number)
    الگوریتم Validation کد ملی بصورت ساده به این شرح است:
    از سمت چپ هر عدد ضربدر ارزش مکانی مع*** خود می شود.
    حاصل ضرب ها با هم جمع می شود.
    باقیمانده تقسیم حاصل جمع ها بر عدد 11 را بدست می آوریم.
    اگر عدد بدست آمده در باقیمانده ی تقسیم، کوچکتر مساوی 2 بود، همان عدد باید با Validation Number (عدد آخر کد ملی) برابر باشد.
    اگر عدد بدست آمده در باقیمانده ی تقسیم، بزرگتر از 2 بود، عدد را منهای 11 می کنیم و نتیجه باید برابر Validation Number (عدد آخر کد ملی) باشد.

    کد PHP:
    <?php
    function CheckNationalCode($code)
    {
          if(
    strlen($code) <> 10){
              echo 
    'کد ملی باید ده رقم باشد';
          }
          else
          {
              
    $codeArray str_split($code);
              
    $AllEq ;
              foreach(
    $codeArray as $item => $value)
              {
                  if(
    $codeArray[0] <> $value)
                  {
                      
    $AllEq false;
                      break;
                  }
                   else{ 
    $AllEq true;} 
              }
              if(
    $AllEq == true) die('اعداد کد ملی نمی توانند برابر هم باشند');
              
    $j 10;
              
    $sum 0;
              for(
    $i=0$i<=8$i++)
                {
                     
    $sum +=((int)($codeArray[$i])) * $j;
                     --
    $j;
                }
              
    $divid $sum 11;
                if (
    $divid <= 2)
                {
                   if(
    $codeArray[9]  == $divid)
                   {
                       echo 
    "کد ملی معتبر است";
                   }
                       echo 
    "کد ملی معتبر نیست"
                }
                else
                {
                    
    $divid1 11 $divid;
                    if (
    $codeArray[9]  == $divid1)
                    {
                          echo 
    "کد ملی معتبر است";
                    } 
                    else
                    {
                          echo 
    "کد ملی معتبر نیست";
                    }   
                }
            }       
    }     

    ?>
    نحوه ی کار این کد به این صورت است که یک کد ملی (nccode) را توسط متد POST دریافت می کند و به تابع CheckNationalCode می دهد تا صحت آنرا بررسی کند.
    این فانکشن را در قالب یک برنامه پی اچ پی که با استفاده از ajax کد ملی را Validat می کند، پیاده سازی کردم

    دانلود نمونه برنامه
    مشاهده ی نمونه برنامه


    منبع : وب سایت جناب آقای کرامتی فر
    کانفیگ،امنیت بخشی و راه اندازی انواع سروها با هزینه مناسب | طراحی و برنامه نویسی تحت وب | جهت درخواست از اینجا اقدام نمایید.
    --==--==--==--
    !Linux Geek


  2. تعداد تشکر ها ازfara_server به دلیل پست مفید


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ ها: 3
    آخرين نوشته: March 7th, 2015, 16:09
  2. پاسخ ها: 0
    آخرين نوشته: August 26th, 2013, 11:00
  3. پاسخ ها: 6
    آخرين نوشته: May 20th, 2013, 20:33
  4. پاسخ ها: 22
    آخرين نوشته: March 18th, 2013, 21:42
  5. پاسخ ها: 0
    آخرين نوشته: June 27th, 2012, 16:29

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •