PHP: Personalausweisnummer überprüfen und auslesen

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'));

 

1 Star2 Stars3 Stars4 Stars5 Stars (Bewerte diesen Artikel als Erster!)

1 Kommentar

  1. 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.

1 Trackback / Pingback

  1. PHP: Deutsche Personalausweisnummer generieren | burian.appfield.net

Antworten

Jeder freigeschaltete Kommentar erhält einen DoFollow-Link.
Wir schalten aber nur Kommentare frei, die auch wirklich welche sind und/oder den Artikel sinnvoll bereichern oder ergänzen. Also gebt euch ein wenig Mühe :)


*