Also wens von euch interesiert, das hat mir ein kumpel gerade gemacht... CODE4FREE ;-);-);-)
PHP:
<?
# Prüfalgorhytmusfunktion
function check_number($number=0){
$p = 7;
for($i=0; $i < strlen(strval($number)); $i++){
$return += substr($number[$i]*$p, -1);
if($p==1) $p=7;
elseif($p==3) $p=1;
elseif($p==7) $p=3;
}
return $return;
}
# Personalausweisnummerprüffunktion
function perso_check($id=0){
$array = explode(" ", $id);
if(substr(check_number(substr($array[0], 0, 9)), -1)==substr($array[0], 9, 1)){ $check["serial"] = true; }
if(substr(check_number(substr($array[1], 0, 6)), -1)==substr($array[1], 6, 1)){ $check["birthday"][0] = true; }
if(substr(check_number(substr($array[2], 0, 6)), -1)==substr($array[2], 6, 1)){ $check["expiration"][0] = true; }
if(time() < mktime(0,0,0, substr($array[2], 2, 2) , substr($array[2], 4, 2) , substr($array[2], 0, 2))){ $check["expiration"][1] = true; }
if(substr(check_number(substr($array[0], 0, 10).substr($array[1], 0, 7).substr($array[2], 0, 7)), -1)==$array[3]){ $check["all"] = true; }
if($check["serial"] == true && $check["birthday"][0] == true && $check["expiration"][0] == true && $check["expiration"][1] == true && $check["all"] == true){ return true; }
else{ return false; }
}
# Beispielaufruf
################
# Wen's interessiert, Aufbau der Personalnummer: Seriennummer+Prüfziffer der Seriennummber+Nationalität | Geburtsdatum(von hinten)+Prüfziffer des Geburtsdatums | Ablaufdatum(von hinten)+Prüfziffer des Ablaufdatums | Prüfziffer über alle Zahlen
# Als Beispiel: 123456789D 1234567 1234567 0
# Nun endlich der Funktionsaufruf
if(perso_check("123456789D 1234567 1234567 0")==true){ echo "Personalnummer korrekt"; }
else{ echo "Personalnummer falsch"; }
?>