|
|
|
Personalausweis Überprüfung
Zurück zur Übersicht Mit dieser Funktion kann man überprüfen, ob ein Personalausweis gültig ist, und die enthalten Daten extrahieren.
Manche Seiten müssen die Personalausweisnummer von dem Person überprüfen, ob dieser z.B. schon Volljährig ist o.ä.
Hierfür kann man diesen kleinen Script benutzen. Zuerst wird überprüft, ob der Personalausweis noch gültig ist, danach werden die enthaltenen Daten extrahiert. Dazu gehören Geburtsdatum, Ablaufdatum, Staatsangehörigkeit, Kennziffer des Wohnsitzes etc.
| PHP |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
|
<?php
//Pruefnummer ueberpruefen
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;
else if($p==3)
$p=1;
else if($p==7)
$p=3;
}
return $return;
}
//Ist der Perso gueltig?
function perso_check($id)
{
$array = explode(" ", $id);
//Erste Checknummer: Zählnummer & Erstwohnsitz
if(! (substr(check_number(substr($array[0], 0, 9)), -1)==substr($array[0], 9, 1)))
return false;
//Zweite Checknummer: Geburtstag
if(! (substr(check_number(substr($array[1], 0, 6)), -1)==substr($array[1], 6, 1)))
return false;
//Dritte Checknummer: Gueltig bis
if(! (substr(check_number(substr($array[2], 0, 6)), -1)==substr($array[2], 6, 1)))
return false;
//Ausweis abgelaufen? Wenn gewuenscht deaktivieren?
if(! (time() < mktime(0,0,0, substr($array[2], 2, 2) , substr($array[2], 4, 2) , substr($array[2], 0, 2))))
return false;
//Vierte Checknummer: Die gesamte Perso-ID
if(! (substr(check_number(substr($array[0], 0, 10).substr($array[1], 0, 7).substr($array[2], 0, 7)), -1)==$array[3]))
return false;
return true;
}
//Informationen aus dem Perso beziehen
function perso_info($id)
{
$array = explode(" ", $id);
//$return: Ein Objekt mit den Daten aus der Ausweisnummer
$return->geb->tag= $array[1]{4} . $array[1]{5}; //Geburtstag
$return->geb->monat = $array[1]{2} . $array[1]{3}; //Geburtsmonat
$return->geb->jahr = "19" . $array[1]{0} . $array[1]{1}; //Geburtsjahr
$alter = date("Y") - $return->geb->jahr;
//Hatte er schon Geburtstag?
if( (date("n") < $return->geb->monat) OR (date("n") == $return->geb->monat AND date("j") < $return->geb->tag) )
$alter--;
$return->alter = $alter;
if($alter >= 18)
$return->volljaehrig = true;
else
$return->volljaehrig = false;
$return->ablauf->tag = $array[2]{4} . $array[2]{5}; //Ausweiß Ablauf Tag
$return->ablauf->monat = $array[2]{2} . $array[2]{3}; //Ausweiß Ablauf Monat
$return->ablauf->jahr = $array[2]{0} . $array[2]{1}; //Ausweiß Ablauf Jahr
$return->herkunft = $array[0]{10};
//Ein Deutscher?
if(strtolower($return->herkunft) == "d")
$return->deutscher = true;
else
$return->deutscher = false;
//Erstwohnsitz als Nummer
$return->erstwohnsitz = $array[0]{0}.$array[0]{1}.$array[0]{2}.$array[0]{3};
return $return;
}
//Beispiel zur Verwendung
if($_GET['check'])
{
$perso_id = $_POST['ida']." ".$_POST['idb']." ".$_POST['idc']." ".$_POST['idd'];
//Oder:
//$perso_id = "1234567891D 2345678 9012345 6"
if(perso_check($perso_id))
{
echo "Personalnummer korrekt!";
echo "<br><br> Daten der Ausweisnummer: <pre>";
$data = perso_info($perso_id);
print_r($data);
echo "</pre>";
//Zugriff z.B. so:
//Alter: $data->alter;
//Geburtsmonat: $data->geb->monat;
//Ablauftag: $data->ablauf->tag;
}
else
{
echo "Personalnummer falsch";
}
}
?>
<!-- Kleines Anwendungsbeispiel -->
Personalnummer:<br>
<form action="?check=1" method="post" >
<input type="text" size="11" maxlength="11" name="ida"><<
<input type="text" size="7" maxlength="7" name="idb"><
<input type="text" size="7" maxlength="7" name="idc"><<<<<
<input type="text" size="1" maxlength="1" name="idd"> <br>
<input type="submit" value="überprüfen">
<br><br>
|
|
An die Funktion perso_check übergibt man die ID des Personalausweises.
Diese überprüft, ob der Personalausweis gültig ist. Es wird auch überprüft, ob der Personalausweis auch noch gültig ist.
Die Funktion perso_info extrahiert die enthaltenen Daten aus der Personalausweisnummer, z.B. Geburtsdatum, Ablaufdatum, Kennzahl des Wohnortes, Staatsangehörigkeit etc.
Wer es mal testen möchte:
http://www.php-einfach.de/perso_check.php
Kommentare
Zurück zur Übersicht
Autor Andavos
|
|
|
|