PHP: Deutsche Personalausweisnummer generieren
Mit dieser von mir geschriebenen Funktion kann man eine zufällige deutsche Personalausweisnummer genierieren lassen. Als Ergebnis erhält man ein Array mit den 4 Positionen der Personalausweisnummer.
Mit meiner Funktion aus dem Beitrag vom 28. April 2009 kann anschließend die generierte Personalausweisnummer wieder ausgelesen werden.
Diese Funktion darf nur für Testzwecke verwendet werden.
Ein Missbrauch ist ausdrücklich untersagt!
< ?php /** * Eine deutsche Personalausweisnummer generiern * Darf nur für Testzwecke genutzt werden!!! * Ein Missbrauch ist untersagt!!! * * by Frank Burian, nQuee netappz - http://www.nquee.com */ function createGermanPersonalId($intLocation = null, $intNumber = null, $strNationality = 'D', $strBirthday = null, // z.B. 14.12.1981 $strExpiration = null) // z.B. 14.12.2020 // null = Zufällig { $arrResult = array(); // Prüfsumme ermitteln if (!function_exists('createChecksum')) { function createChecksum($intID) { $intMultiplier = 7; $intSum = 0; $intIDLength = strlen($intID); for ($a=0; $a<$intIDLength; $a++) { $intSign = (integer) substr($intID,$a,1); $intTmpSum = ($intSign*$intMultiplier); $intSum += $intTmpSum; if ($intMultiplier == 7) { $intMultiplier = 3; } elseif ($intMultiplier == 3) { $intMultiplier = 1; } else { $intMultiplier = 7; } } return substr($intSum,strlen($intSum)-1,1); } } // Parameter prüfen/ Vorbelegungen if (is_null($intLocation)) $intLocation = rand(1000,9999); if (!preg_match("|^[0-9]+$|",$intLocation) || ($intLocation<1000) || ($intLocation>9999)) { return false; } if (is_null($intNumber)) $intNumber = rand(11000,99999); if (!preg_match("|^[0-9]+$|",$intNumber) || ($intNumber<10000) || ($intNumber>99999)) { return false; } if (empty($strNationality)) $strNationality = chr(rand(65,95)); if ((strlen($strNationality) != 1) || (ord($strNationality)<65) || (ord($strNationality)>95)) { return false; } if (is_null($strBirthday)) { $strBirthday = date("d.m.y", mktime(0,0,0,rand(1,12),rand(1,28), rand(date('Y',time())-60,date('Y',time())-16))); } if (!preg_match("/^([0-9]{1,2}).([0-9]{1,2}).([0-9]{2,4})$/i",$strBirthday)) { return false; } if (is_null($strExpiration)) { $strExpiration = date("d.m.y",mktime(0,0,0,rand(1,12),rand(1,28),rand(date('Y',time())+1,date('Y',time())+5))); } if (!preg_match("/^([0-9]{1,2}).([0-9]{1,2}).([0-9]{2,4})$/i",$strExpiration)) { return false; } // Informationen generieren $strBirthday = explode('.',$strBirthday); $strBirthday = $strBirthday[2].$strBirthday[1].$strBirthday[0]; $strExpiration = explode('.',$strExpiration); $strExpiration = $strExpiration[2].$strExpiration[1].$strExpiration[0]; $strTemp = $intLocation.$intNumber.createChecksum($intLocation.$intNumber); $arrResult[0] = $strTemp.$strNationality; $arrResult[1] = $strBirthday.createChecksum($strBirthday); $arrResult[2] = $strExpiration.createChecksum($strExpiration); $arrResult[3] = createChecksum($strTemp.$arrResult[1].$arrResult[2],true); return $arrResult; } // Aufruf: $arrPersonalId = createGermanPersonalId(); echo $arrPersonalId[0].'< <'.$arrPersonalId[1].'<'.$arrPersonalId[2].'<<<<<<'.$arrPersonalId[3]; ?>
15. Mai 2009 um 11:14
und wie kann man das Z.B. in eine html seite bekomen? sry noob^^
15. Mai 2009 um 11:34
Naja, PHP-Kenntnisse sind schon Voraussetzung!
15. Mai 2009 um 17:48
Wirklich super Funktion. Genau sowas habe ich gesucht. Vielen Dank dafür!
17. Mai 2009 um 11:36
Thx ! Missbrauchsrisiko würde ich auch als er gering einschätzen, die ganzen Kiddis können damit ja nix anfangen
27. Juni 2009 um 16:32
danke schöne funktion !
17. Juli 2009 um 18:38
okay