Mit dieser Funktion können Sie, via PHP, eine deutsche Personalausweisnummer auf ihre Gültigkeit prüfen. Ist die Personalausweisnummer gültig, erhalten Sie ein Array mit allen Information zu der Person.
Einstieg in PHP 7 und MySQL
/** * PASS : XXXXXXXXXXD << XXXXXXX < XXXXXXX <<<<<<< X * FUNCTION: $ID01 << $ID02 < $ID03 <<<<<<< $ID04 **/ function checkGermanPersonalId($ID01,$ID02,$ID03,$ID04) { $arrResult = array(); // Prüfsumme ermitteln if (!function_exists('buildChecksum')) { function buildChecksum($intID) { $intMultiplier = 7; $intSum = 0; if (strlen($intID) == 11) { $intIDLength = 9; } elseif (strlen($intID) == 7) { $intIDLength = 6; } else { $intIDLength = strlen($intID); } for ($a=0; $a<$intIDLength; $a++) { $intSign = (integer) substr($intID,$a,1); $intTmpSum = ($intSign*$intMultiplier); $intSum += (integer) substr($intTmpSum,strlen($intTmpSum)-1,1); if ($intMultiplier == 7) { $intMultiplier = 3; } elseif ($intMultiplier == 3) { $intMultiplier = 1; } else { $intMultiplier = 7; } } return substr($intSum,strlen($intSum)-1,1); } } // Erste ID prüfen if (strlen($ID01) != 11) { return false; } if (buildChecksum($ID01) != substr($ID01,9,1)) { return false; } $arrResult['firstLocation'] = substr($ID01,0,4); $arrResult['origin'] = strtoupper($ID01{10}); $arrResult['isGerman'] = ($arrResult['origin'] == 'D') ? true : false; // Zweite ID prüfen if (strlen($ID02) != 7) { return false; } if (buildChecksum($ID02) != $ID02{6}) { return false; } $arrResult['birthday']['day'] = $ID02{4}.$ID02{5}; $arrResult['birthday']['month'] = $ID02{2}.$ID02{3}; $arrResult['birthday']['year'] = $ID02{0}.$ID02{1}; $arrResult['age'] = intval((mktime(0,0,0,date("m"),date("d"),date("Y")) - mktime(0,0,0,$arrResult['birthday']['month'],$arrResult['birthday']['day'],$arrResult['birthday']['year'])) / (3600 * 24 * 365)); $arrResult['isAdult'] = ($arrResult['age'] >= 18) ? true : false; // Dritte ID prüfen if (strlen($ID03) != 7) { return false; } if (buildChecksum($ID03) != $ID03{6}) { return false; } $arrResult['expiration']['day'] = $ID03{4}.$ID03{5}; $arrResult['expiration']['month'] = $ID03{2}.$ID03{3}; $arrResult['expiration']['year'] = $ID03{0}.$ID03{1}; // Vierte ID prüfen $intCompletePersonalId = substr($ID01,0,10).$ID02.$ID03; if (buildChecksum($intCompletePersonalId) != $ID04) { return false; } return $arrResult; } // Aufruf: print_r(checkGermanPersonalId('6127057594D','8703189','1911149','2'));
Funktioniert super 🙂 Aber gibts das auch für den neuen Personalausweis? Ich bin leider noch nicht so fit um mir das script anzupassen. Würde mich freuen wenns ein zweites für den neuen Perso gibt.