Profil | Mitglieder | Registrieren | Start | Suche


PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » Personalausweis Überprüfung    » Hallo Gast [Login | Registrieren]

Neues Thema | Antworten   

Autor Beitrag
Andavos
Administrator
Foren-Gott


Dabei seit: 30.11.2003
Herkunft:
Posts: 6298
     Personalausweis Überprüfung Zitat | Bearbeiten

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], 09)), -1)==substr($array[0], 91)))
      return 
false;

   
//Zweite Checknummer: Geburtstag
   
if(! (substr(check_number(substr($array[1], 06)), -1)==substr($array[1], 61)))
      return 
false;

   
//Dritte Checknummer: Gueltig bis
   
if(! (substr(check_number(substr($array[2], 06)), -1)==substr($array[2], 61)))
      return 
false;

   
//Ausweis abgelaufen? Wenn gewuenscht deaktivieren?
   
if(! (time() < mktime(0,0,0substr($array[2], 22) , substr($array[2], 42) , substr($array[2], 02))))
      return 
false;

   
//Vierte Checknummer: Die gesamte Perso-ID
   
if(! (substr(check_number(substr($array[0], 010).substr($array[1], 07).substr($array[2], 07)), -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">&lt;&lt;
<input type="text" size="7" maxlength="7" name="idb">&lt;
<input type="text" size="7" maxlength="7" name="idc">&lt;&lt;&lt;&lt;&lt;
<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


www.php-einfach.de, PHP lernen leicht gemacht
www.webhosterwissen.de, Webhosting-Vergleich





Post wurde schon 1x editiert, das letzte mal am 21.04.2006 um 16:21 von Andavos
03.02.2006, 21:14 Profil | PM | E-Mail  
Gast


      Zitat | Bearbeiten

Hallo,

habe den Codeschnipsel etwas überarbeitet. Nun wird z.Bsp. auch das Gültigkeits- und Geburtsdatum überprüft, ob diese überhaupt reelle Daten sind (es kann also keiner am 30.02.1980 Geburtstag haben, wegen Februar und so.. )

Des weiteren wird das Alter errechnet und bei unter 18-jährigen rot markiert.

Im Codeschnipsel wird die Nummer von abgelaufenen Ausweisen als ungültig ausgegeben. Nun wird dieser Umstand einfach nur rot angezeigt.

----------------------------------------------
Beispiel:
1234123457D<<8004129<1112016<<<<<<<6

Ausgabe:
----------------------------------------------
Personalausweisnummer korrekt!

Daten der Ausweisnummer:

Geboren am: 12.04.1980 (Alter: 29)

Der Ausweis ist noch gültig bis: 01.12.2011

Kennzahl Erstwohnsitz: 1234 (siehe hier)
Personenkennzahl: 12345
----------------------------------------------

Zum testen hier klicken:
http://molch-entertainment.de/perso.php


 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:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
<html><head>
<title>Personalausweis/Reisepassnummer überprüfen</title>
<style type="text/css">
a {font-weight: bold;}
a:hover {text-decoration: none;}
</style>
<script language="javascript">
function weiter1() {
if (document.form1.ida.value.length == 10) {
document.form1.idb.focus(); }
}
function weiter2() {
if (document.form1.idb.value.length == 7) {
document.form1.idc.focus(); }
}
function weiter3() {
if (document.form1.idc.value.length == 7) {
document.form1.idd.focus(); }
}
function weiter4() {
if (document.form1.idd.value.length == 1) {
document.form1.button.focus(); }
}
</script>
</head><body text="#212121" link="#212121" vlink="#212121" alink="#212121" onload="document.form1.ida.focus();"><font face="verdana" size="2">
<?php
##################################
//Ab hier nichts mehr ändern, wenn man keine Ahnung hat !

//© 2008 by Molch-Entertainment - www.Molch-Entertainment.de | Codet by Sebastian Hollstein
//Der ©-Hinweis darf nicht entfernt werden !

//Code teilweise von http://www.php-einfach.de

//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;
}

//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
   
$return->geb->jahr2 $array[1]{0} . $array[1]{1}; //Geburtsjahr 2-stellig
   
$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->ablauf->jahr2 $array[2]{0} . $array[2]{1}; //Ausweiß Ablauf Jahr 2-stellig

   //Erstwohnsitz als Nummer
   
$return->erstwohnsitz $array[0]{0}.$array[0]{1}.$array[0]{2}.$array[0]{3};
    
$return->pernr $array[0]{4}.$array[0]{5}.$array[0]{6}.$array[0]{7}.$array[0]{8};

   return 
$return;
}

$err1=0;
$err2=0;
$err3=0;
$err4=0;
$fehler="";

$perso_id $_GET['ida']." ".$_GET['idb']." ".$_GET['idc']." ".$_GET['idd'];
   if (
strlen($perso_id) != 28 and strlen($perso_id) != 3)
   {
   echo 
'<font color="red"><b>Bitte alle Felder vollständig ausfüllen!</b></font><br><br>';
   }
   else
   {
$array explode(" "$perso_id);

   
//Erste Checknummer: Zählnummer & Erstwohnsitz
   
if(! (substr(check_number(substr($array[0], 09)), -1)==substr($array[0], 91)))
   {
   
$err1=1;
   
$fehler=$fehler.'<font color="red">Fehler: Die Prüfsumme der Behördenkennzahl + Ausweisnummer stimmt nicht!</font><br>';
    }

    
//ist es ein reelles Datum ?
    
if(! checkdate(substr($array[1], 22), substr($array[1], 42), substr($array[1], 02)))
    {
    
$err2=1;
    
$fehler=$fehler.'<font color="red">Fehler: Das Geburtsdatum ist kein reelles Datum!</font><br>';
    }
    
   
//Zweite Checknummer: Geburtstag
   
if(! (substr(check_number(substr($array[1], 06)), -1)==substr($array[1], 61)))
   {
   
$err2=1;
   
$fehler=$fehler.'<font color="red">Fehler: Die Prüfsumme des Geburtsdatums stimmt nicht!</font><br>';

    }  

    
//ist es ein reelles Datum ?
    
if(! checkdate(substr($array[2], 22), substr($array[2], 42), substr($array[2], 02)))
{
    
$err3=1;
    
$fehler=$fehler.'<font color="red">Fehler: Das Ablaufdatum ist kein reelles Datum!</font><br>';

}

   
//Dritte Checknummer: Gueltig bis
  
if(! (substr(check_number(substr($array[2], 06)), -1)==substr($array[2], 61)))

    
$err3=1;
    
$fehler=$fehler.'<font color="red">Fehler: Die Prüfsumme des Ablaufdatums stimmt nicht!</font><br>';

}

   
//Vierte Checknummer: Die gesamte Perso-ID
   
if(! (substr(check_number(substr($array[0], 010).substr($array[1], 07).substr($array[2], 07)), -1)==$array[3]))

    
$err4=1;
    
$fehler=$fehler.'<font color="red">Fehler: Die Gesamtprüfsumme stimmt nicht!</font><br>';
}


   if(
$fehler=="")
      {
      echo 
'<font color="green"><b>Personalausweisnummer korrekt!</b></font><br>';

      echo 
"<br>Daten der Ausweisnummer:<br><br>";
      
$data perso_info($perso_id);
      echo 
'<b>Geboren am:</b> 'print_r($data->geb->tag); echo'.'print_r($data->geb->monat); echo'.'print_r($data->geb->jahr);
      if (
$data->volljaehrig)
      {
      echo
' (<b>Alter:</b> <font color="green">';print_r($data->alter); echo'</font>)<br>';
      } else {
      echo
' (<b>Alter:</b> <font color="red">';print_r($data->alter); echo' - Minderjährig!</font>)<br>';
      }
//Ausweis abgelaufen?
if(! (time() < mktime(0,0,0substr($array[2], 22) , substr($array[2], 42) , substr($array[2], 02))))
{

    echo
'<br><font color="red">Der Ausweis ist abgelaufen am: <b>'.substr($array[2], 42).'.'.substr($array[2], 22).'.'.substr($array[2], 02).'</b>!</font><br>';
}
else
{
      echo 
'<br><font color="green">Der Ausweis ist noch gültig bis: <b>'print_r($data->ablauf->tag); echo'.'print_r($data->ablauf->monat); echo'.20'print_r($data->ablauf->jahr); echo '</font></b><br>';
}
      echo 
'<br><b>Kennzahl Erstwohnsitz:</b> 'print_r($data->erstwohnsitz); echo ' (siehe <a href="http://www.pruefziffernberechnung.de/Begleitdokumente/BKZ.shtml" target="_blank">hier</a>)';
      echo 
'<br><b>Personenkennzahl:</b> 'print_r($data->pernr); echo'<br><br>Prüfen Sie nun, ob die hier angezeigten Daten<br>mit dem Dokument und der Person übereinstimmen.<br><br>';
      }
elseif (
$fehler!="" and strlen($perso_id) != 3)
{
echo 
'<font color="red"><b>Personalausweisnummer ungültig!</b></font><br><br>';
echo 
$fehler.'<br>';
}
else
{
$err1=0;
$err2=0;
$err3=0;
$err4=0;
}
}
?>
<b>Personalausweisnummer prüfen:</b><br><br>
<form name="form1" action="perso.php" method="get">
<table border="0"><tr><td>
<input type="text" size="10" maxlength="10" name="ida" tabindex="1" value="<?php echo $_GET['ida']; ?>" onkeyup="weiter1();" style="border:1px solid #888888;<?php if($err1!=0) {echo' background-color:#ff6b6b;';};?>"><font face="verdana" size="2">D&lt;&lt;</font></td><td>
<input type="text" size="7" maxlength="7" name="idb" tabindex="2" value="<?php echo $_GET['idb']; ?>" onkeyup="weiter2();" style="border:1px solid #888888;<?php if($err2!=0) {echo' background-color:#ff6b6b;';};?>"><font face="verdana" size="2">&lt;</font></td><td>
<input type="text" size="7" maxlength="7" name="idc" tabindex="3" value="<?php echo $_GET['idc']; ?>" onkeyup="weiter3();" style="border:1px solid #888888;<?php if($err3!=0) {echo' background-color:#ff6b6b;';};?>"><font face="verdana" size="2">&lt;&lt;&lt;&lt;&lt;</font></td><td>
<input type="text" size="1" maxlength="1" name="idd" tabindex="4" value="<?php echo $_GET['idd']; ?>" onkeyup="weiter4();" style="border:1px solid #888888;<?php if($err4!=0) {echo' background-color:#ff6b6b;';};?>"></td>
<td><input type="submit" tabindex="5" id="button" value="überprüfen" style="background-color:#eeeeee; border:1px solid #dddddd;"></td></tr></table></form>
<font size="1">(Es werden keine Daten gespeichert)</font>
</font></body></html>



Viel Spaß


17.05.2009, 13:04  
Gast


      Zitat | Bearbeiten

und wie bekomm ich das mit in die register.php?




05.10.2010, 19:37  
Gast


     Neuer Ausweis Zitat | Bearbeiten

Wie schaut es mit den neuen Ausweisen aus? Wirst du dir da auch die Mühe machen?

Grüße
Dennis


30.05.2011, 13:38  
Seiten (1):  1 
PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » Personalausweis Überprüfung   

Neues Thema | Antworten   


Powered by Command Board 1.0 - Beta 2.0 © 2004-08 PHP-Einfach | Impressum | Datenschutz