Archiv für Mai 2009

PHP: Deutsche Personalausweisnummer generieren

Mittwoch, 13. Mai 2009

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&lt;1000) || ($intLocation>9999)) {
		return false;
	}
	if (is_null($intNumber)) $intNumber = rand(11000,99999);
	if (!preg_match("|^[0-9]+$|",$intNumber) || ($intNumber&lt;10000) || ($intNumber>99999)) {
		return false;
	}
	if (empty($strNationality)) $strNationality = chr(rand(65,95));
	if ((strlen($strNationality) != 1) || (ord($strNationality)&lt;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];
?>

urlCrypt.com stellt jDownloader PHP-Klasse für die DLC-API zur Verfügung

Dienstag, 05. Mai 2009

Mit der Entwicklung von urlCrypt.com habe ich die herkömmliche DLC-API, für die Erstellung von Container-Formaten, die jDownloader zur Verfügung stellt in ein Klassen-Format (OOP) auf PHP5-Basis gepackt und diese Klasse dem jDownloader-Team zur Verfügung gestellt.

http://jdownloader.org/de/news/blog/x20090501-002-dlcapi-oop