PDA

View Full Version : سوال: راهنمایی در مورد اعتبار سنجی کد ملی



vahidth
سه شنبه 21 مهر 1394, 17:57 عصر
آیا این فانکشن برای اعتبار سنجی کد ملی صحیح است؟


<?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 "کد ملی معتبر است";
}
else
{
echo "کد ملی معتبر نیست";
}
}
else
{
$divid1 = 11 - $divid;
if ($codeArray[9] == $divid1)
{
echo "کد ملی معتبر است";
}
else
{
echo "کد ملی معتبر نیست";
}
}
}
}
?>



میخوام از این فانکشن برای اعتبار سنجی کد ملی استفاده کنم منتها نمیدونم بعد از این که کد ملی صحیح بود چطور بقیه عملیات رو انجام بدم


<?php include("func.php"); ?>
<!doctype html>
<html>
<head>

<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
<center>
<form id="form1" name="form1" method="post" dir="rtl">
<p>
<label for="txt1">کد ملی خود را وارد کنید:</label>
<input type="text" name="txt1" id="txt1">
</p>
<p>
<label for="textfield"></label>
<input type="submit" name="submit" id="submit" value="دریافت اطلاعات">
</p>
</form>
<?php

if(isset($_POST["submit"]))
{
if(empty($_POST["txt1"]))
{
echo "لطفا کد ملی خود را وارد کنید";
}
CheckNationalCode($_POST["txt1"]);
اینجا چطور باید کدی بنویسیم که بعد از اینکه کد ملی صحیح وارد شده بود بقیه عملیات رو انجام بده؟؟؟


}
?>
</center>
</body>
</html>

Unique
سه شنبه 21 مهر 1394, 19:45 عصر
برات تابع را دوباره نویسی کردم و جمله شرطیش را هم نوشتم چطوری میشه :

function CheckNationalCode($code)
{
if(strlen($code) <> 10){
$err = 'کد ملی باید ده رقم باشد';
}
else
{
$codeArray = str_split($code);
$AllEq ;
foreach($codeArray as $item => $value)
{
if($codeArray[0] <> $value)
{
$AllEq = false;
break;
}
else{ $AllEq = true;}
}
if($AllEq == true) $err = 'اعداد کد ملی نمی توانند برابر هم باشند';
$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)
{
// it's valid.
}
else
{
$err = "کد ملی معتبر نیست";
}
}
else
{
$divid1 = 11 - $divid;
if ($codeArray[9] == $divid1)
{
// it's valid.
}
else
{
$err = "کد ملی معتبر نیست";
}
}
}
return isset($err) ? $err : true;
}

$res = CheckNationalCode(MELI_CODE);
if ($res === true){
// do what yuou need to do ....
}else{
echo $res;
}