-
עשית גוגל? יש המון! הנה אחד:
<?php // DEFINE RETURN VALUES define(R_ELEGAL_INPUT, -1); define(R_NOT_VALID, -2); define(R_VALID, 1); function ValidateID($str) { //Convert to string, in case numeric input $IDnum = strval($str); //validate correct input if(! ctype_digit($IDnum)) // is it all digits return R_ELEGAL_INPUT; if((strlen($IDnum)>9) || (strlen($IDnum)<5)) return R_ELEGAL_INPUT; //If the input length less then 9 and bigger then 5 add leading 0 while(strlen($IDnum<9) { $IDnum = '0'.$IDnum; } $mone = 0; //Validate the ID number for($i=0; $i<9; $i++) { $char = mb_substr($IDnum, $i, 1); $incNum = intval($char); $incNum*=($i%2)+1; if($incNum > 9) $incNum-=9; $mone+= $incNum; } if($mone%10==0) return R_VALID; else return R_NOT_VALID; } ?>
מכאן, יש בעיות בקוד הזה (אני חסר ידע בPHP אבל לא צריך להיות גאון כדי להבין שחסר סוגר מסולסל אחרי הקטע שמוסיף 0, )אבל תוכל לערוך אותו ולבנות על הבסיס, בהצלחה!
-
תקינות מס' זהות מושגת ע"י ספרת הביקורת, שזה הספרה האחרונה.
יצירת ובדיקת ספרת הביקורת נעשית ע"י אלגוריתם לוהן, ולכן אין טעם לחפש בעברית, כי יש תשובות טובות בהרבה כמחפשים באופן רחב יותר:php Luhn algorithm
והתוצאות, תוצאה ראשונה
https://gist.github.com/troelskn/1287893
והנה טסט:
http://sandbox.onlinephpfunctions.com/code/3740543c6dde8c11db9f24362f9552da20ded960
-
מצאתי את זה
תודה לכולם
function ValidID($id) { if(strlen($id) == 9 && CheckDigit(substr($id, 0, 8)) == $id[8]) return TRUE; // print = 'ok'; else // print 'erorr'; return FALSE; } function CheckDigit($id) { for($i = 0; $i < strlen($id); $i++) if($i % 2 != 0) $Sum .= $id[$i] * 2; else $Sum .= $id[$i]; for($i = 0; $i <= strlen($Sum)-1; $i++) $Digit = $Digit + $Sum[$i]; return ( $Digit % 10 > 0 ? 10 - ($Digit % 10) : 0); } if('123456789' && ValidID('123456789') > 0){ }
-
@A0533057932 אמר בבדיקת תקינות מספר תעודת זהות באמצעות PHP:
@WWW יש להם 0 בהתחלה
מי אמר?
צריך להוסיף אפסים בתחילת הקוד, אם רוצים לבדוק ככה. -
@A0533057932 בגלל שאתה לא מתכנת לא הבנת את @WWW.
הוא טען שהקוד מניח הנחות (שהקלט/הפקיד הקפיד לשים אפסים קודם), וזה דבר לא טוב מבחינת תכנות, האמת בנוגע למס' הזהות לא קשורה פה. -