<?php
$status_vergabe=5;//hier den neuen Status eingeben der vergeben werden soll
include ('includes/application_top.php');
$smarty = new Smarty;
if (!isset($_SESSION['customer_id'])) {
xtc_redirect(xtc_href_link(FILENAME_LOGIN, '', 'SSL'));
}
require (DIR_WS_INCLUDES.'header.php');
require (DIR_FS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/source/boxes.php');
$breadcrumb->add('Personalausweis Check', xtc_href_link('perso_check.php', '', 'SSL'));
//echo '<pre>';
//print_r($_SESSION);
//echo '</pre>';
if(isset($_SESSION['customer_id']) AND isset($_SESSION['customer_email_address'])){
echo "Du bist eingeloggt und kannst deine Personalien jetzt Personaliesieren";
?>
<?php
}else{
die("Du mußt eingelogt sein um die Personalausweis Daten anzugeben!!<br /><a href='#'>Login Url hier rein</a>");
}
function check_number($id, $checknumber) {
$p = 7;
$sum = 0;
for($i=0; $i < strlen($id); $i++) {
$char = $id{$i};
if($char >= '0' && $char <= '9')
$int = intval($char);
else
$int = ord($char)-55;
$sum += $int*$p;
if($p==1)
$p=7;
else if($p==3)
$p=1;
else if($p==7)
$p=3;
}
$last_number = substr(strval($sum), -1);
return $last_number == $checknumber;
}
//Gibt die Art (neu vs. alt) des Personalausweis zurück
function perso_type($id) {
$splits = explode(" ", strtoupper($id));
if(strlen($splits[0]) == 11 && strlen($splits[1]) == 7 && strlen($splits[2]) == 7 && strlen($splits[3]) == 1) {
return 'old';
} else if(strlen($splits[0]) == 10 && strlen($splits[1]) == 7 && strlen($splits[2]) == 8 && strlen($splits[3]) == 1) {
return 'new';
} else {
return 'unknown';
}
}
//Sind die Prüfziffern gültig
function perso_checksum($id) {
$splits = explode(" ", strtoupper($id));
$checksums = array();
$perso_type = perso_type($id);
if($perso_type == 'unknown') {
return false;
}
$checksums[] = array(substr($splits[0],0,9), substr($splits[0],9,1));
$checksums[] = array(substr($splits[1],0,6), substr($splits[1],6,1));
$checksums[] = array(substr($splits[2],0,6), substr($splits[2],6,1));
$checksums[] = array(substr($splits[0],0,10).substr($splits[1],0,7).substr($splits[2],0,7), $splits[3]);
//Überprüfung der Checksummen
foreach($checksums as $checksum) {
if(!check_number($checksum[0], $checksum[1])) {
return false;
}
}
return true;
}
//Ist der Perso noch gültig?
function perso_gueltig($id) {
$splits = explode(" ", $id);
$valid_until = mktime(0,0,0, substr($splits[2], 2, 2) , substr($splits[2], 4, 2) , "20".substr($splits[2], 0, 2));
//Ist der Perso noch gültig
if(time() > $valid_until)
return false;
return true;
}
//Informationen aus dem Perso beziehen
function perso_info($id) {
$splits = explode(" ", $id);
//$return: Ein Objekt mit den Daten aus der Ausweisnummer
$return = new stdClass();
$return->perso_type = perso_type($id);
$return->geb = new stdClass();
$return->geb->tag= $splits[1]{4} . $splits[1]{5}; //Geburtstag
$return->geb->monat = $splits[1]{2} . $splits[1]{3}; //Geburtsmonat
$return->geb->jahr = $splits[1]{0} . $splits[1]{1}; //Geburtsjahr
if($return->geb->jahr > intval(date("y"))) {
$return->geb->jahr = "19".$return->geb->jahr;
} else {
$return->geb->jahr = "20".$return->geb->jahr;
}
$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 = new stdClass();
$return->ablauf->tag = $splits[2]{4} . $splits[2]{5}; //Ausweis Ablauf Tag
$return->ablauf->monat = $splits[2]{2} . $splits[2]{3}; //Ausweis Ablauf Monat
$return->ablauf->jahr = "20".$splits[2]{0} . $splits[2]{1}; //Ausweis Ablauf Jahr
if($return->perso_type == 'old') {
$return->herkunft = $splits[0]{10};
} else {
$return->herkunft = $splits[2]{7};
}
//Ein Deutscher?
if(strtolower($return->herkunft) == "d") {
$return->deutscher = true;
} else {
$return->deutscher = false;
}
//Behördenkennzahl als Nummer
$return->behoerdenkennzahl = substr($splits[0], 0, 4);
return $return;
}
if(isset($_GET['check'])) {
$perso_id = $_POST['ida']." ".$_POST['idb']." ".$_POST['idc']." ".$_POST['idd'];
if(perso_checksum($perso_id)) {
echo "Personalausweisnummer korrekt!<br>";
$idin=xtc_db_input($_SESSION['customer_id']);
$mailin=xtc_db_input($_SESSION['customer_email_address']);
$check_perso = xtc_db_query("UPDATE customers SET customers_status='$status_vergabe' WHERE customers_id='$idin' AND customers_email_address='$mailin'");
//-----------Von hier
$check_customer_query = xtc_db_query("SELECT * FROM `customers` WHERE `customers_id`='$idin'");
//var_dump($check_customer_query);
if (xtc_db_num_rows($check_customer_query) >0) {
$check_personalstatus = xtc_db_fetch_array($check_customer_query);
$neuer_status=htmlspecialchars($check_personalstatus['customers_status']);
if($neuer_status==$status_vergabe){
$id_gegencheck=htmlspecialchars($check_personalstatus['customers_id']);
$email_gegencheck=htmlspecialchars($check_personalstatus['customers_email_address']);
echo "<br>Der User mit der Id= '.$id_gegencheck.'<br>
und der Email = '.$email_gegencheck.'<br>
hatjetztden Status '.$neuer_status.'";
}else{
echo "Der status wurde nicht aktualiesiert";
}
} else {
die("Error");// . mysqli_error();
}
//------- Bis hier ist nicht nötig wenn man auf den Gegencheck verzichten kann
if(!perso_gueltig($perso_id)) {
echo "<br /> <b>Perso ist abgelaufen!</b>";
}
echo "<br /><br /> Daten der Ausweisnummer: <pre>";
$data = perso_info($perso_id);
print_r($data);
echo "</pre>";
} else {
echo "Personalausweisnummer falsch!<br /><br />";
}
}else{
$smarty->assign('language', $_SESSION['language']);
$smarty->caching = 0;
$main_content = $smarty->fetch(CURRENT_TEMPLATE.'/module/perso_check.html');
$smarty->assign('main_content', $main_content);
$smarty->caching = 0;
if(!defined(RM)) $smarty->load_filter('output', 'note');
$smarty->display(CURRENT_TEMPLATE.'/index.html');
echo '<script>window.onunload = refreshParent; function refreshParent() { window.opener.location.reload(); }</script>';
include ('includes/application_bottom.php');
}
?>