Sibongiseni Khumalo Ответов: 3

Проверка южноафриканского удостоверения личности


Как я могу проверить, что номер, вставленный в текстовое поле, является действительным южноафриканским идентификатором, и если это мужчина или женщина

3 Ответов

Рейтинг:
1

E.F. Nijboer

Посмотрите здесь (код c# можно найти в нижней части страницы):
http://geekswithblogs.net/willemf/archive/2005/10/30/58561.aspx[^]

Удачи вам!


Monjurul Habib

хорошая ссылка 5+

Рейтинг:
1

Monjurul Habib

Формат обычного южноафриканского идентификационного номера выглядит следующим образом
{YYMMDD}{G}{SSS}{C}{A}{Z}
YYMMDD: Дата рождения
G : Пол. 0-4 Женщины; 5-9 Мужчин.
SSS : порядковый номер для комбинации DOB/G.
С : Гражданство. 0 SA; 1 другое.
А : обычно 8 или 9 (могут быть и другие значения)
Z : контрольная цифра.
Следующая логика объясняет, как работает контрольная цифра:

Для этого объяснения я собираюсь использовать идентификационный номер 860506 5 397 08 3
а) сложить все цифры идентификационного номера в нечетные позиции (за исключением последнего числа, которое является контрольной цифрой):
8+0+0+5+9+0 = 22
б) возьмите все четные цифры как одно число и умножьте его на 2:
656378 * 2 = 1312756
в) сложите цифры этого числа вместе (в б)
1+3+1+2+7+5+6 = 25
г) добавить ответ С к ответу а
22+25 = 47
д) вычтите второй символ из D из 10, теперь это число должно равняться контрольному символу
10-7 = 3 = управляющий символ (3)


и поэтому, если вам когда-нибудь придется подтвердить идентификационный номер, это будет лучший способ сделать это ...

Ниже приведены дополнительные ссылки:
Из чего состоит южноафриканский идентификационный номер?
{Resloved} проверка пола идентификационного номера


Devin Norgarb

Большое спасибо, через 7 лет ты мне помог.
Я построил рабочую функцию с помощью PHP

Рейтинг:
1

Member 13746875

ПОЛНЫЙ HTML И PHP КОД С ДОПОЛНИТЕЛЬНЫМИ ФУНКЦИЯМИ

<html>
<body>

	<form method="post" action="<?=$_SERVER['PHP_SELF'];?>">
		<p>Enter the ID Number: <input name="idnumber" type="text" id="idnumber" /> </p>
		<p> <input type="submit" value="Check" /> </p>
	</form>

</body>
</html>
<?php


	Validate($_POST['idnumber']);
	function Validate($idNumber) {
		$correct = true;
		if (strlen($idNumber) !== 13 || !is_numeric($idNumber) ) {
			echo "ID number does not appear to be authentic - input not a valid number";
			$correct = false; die();
		}

		$year = substr($idNumber, 0,2);
		$currentYear = date("Y") % 100;
		$prefix = "19";
		if ($year < $currentYear)
		    $prefix = "20";
	    $id_year = $prefix.$year;

        $id_month = substr($idNumber, 2,2);
        $id_date = substr($idNumber, 4,2);

		$fullDate = $id_date. "-" . $id_month. "-" . $id_year;
		
		if (!$id_year == substr($idNumber, 0,2) && $id_month == substr($idNumber, 2,2) && $id_date == substr($idNumber, 4,2)) {
			echo 'ID number does not appear to be authentic - date part not valid'; 
			$correct = false;
		}
		$genderCode = substr($idNumber, 6,4);
        $gender = (int)$genderCode < 5000 ? "Female" : "Male";

       $citzenship = (int)substr($idNumber, 10,1)  === 0 ? "citizen" : "resident";//0 for South African citizen, 1 for a permanent resident

        $total = 0;
        $count = 0;
	    for ($i = 0;$i < strlen($idNumber);++$i)
	    {
		    $multiplier = $count % 2 + 1;
		    $count ++;
		    $temp = $multiplier * (int)$idNumber{$i};
		    $temp = floor($temp / 10) + ($temp % 10);
		    $total += $temp;
	    }
	    $total = ($total * 9) % 10;

	    if ($total % 10 != 0) {
	        echo 'ID number does not appear to be authentic - check digit is not valid';
		    $correct = false;
	    }

        if ($correct){
            echo nl2br( "\nSouth African ID Number:   ". $idNumber .
                '  Birth Date:   ' . $fullDate.
                '  Gender:  ' . $gender .
                '  SA Citizen:  ' . $citzenship);
        }
	}


Richard MacCutchan

На семь лет опоздал.