• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل این قطعه کد
#1
با سلام

این تابع چک کردن کد ملی رو من داخل یه صفحه ذخیره کردم به نام cod.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 
"کد ملی معتبر نیست";
                }   
            }
        }       
}

?>

حالا این کد رو دارم اینجوری تست میزنم جواب نمیده

کد پی‌اچ‌پی:
require_once('cod.php');
 

   
$code=$_POST['code'];
     
     
// CheckNationalCode($code);
       
        

       
if (CheckNationalCode($code) == 'کد ملی معتبر است')
          
          {echo 
' <br> Cod Is Ok'; }
        else
          {    
           echo 
'<br> Cod Is Not Ok';
                  } 
در حقیقت من میخوام اگه کد ملی درست بود عمل insert انجام شه
  پاسخ
تشکر شده توسط :
#2
سلام. به جای echo تو تابع از return استفاده کن. البته به نظرم برگشت دادن رشته و مقایسه اون زیاد جالب نیست.
  پاسخ
تشکر شده توسط : enyac
#3
دوست عزیز من چطوری میتونم با استفاده از if شرطم رو کد نویسی کنم
  پاسخ
تشکر شده توسط :
#4
سلام
الگوریتم زیر برای صحت کد ملی است که در سایت زیر
http://www.bshafiei.ir/Article_view/index/2DsfW9nNh1tdUP/%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D9%88-%D9%85%D8%AA%D8%AF-%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5-%D8%B5%D8%AD%D8%AA-%DA%A9%D8%AF-%D9%85%D9%84%DB%8C-%D8%AF%D8%B1-PHP-%D9%88-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA

قرار داده شده .
کد:
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;
}
$code = "codemeli";
echo check_national_code($code);
امروز هنوز تموم نشده ....
Web Site: goyii.ir
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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