<?php
/*****************************************************\
* Eine Klasse von Florian Rathe
* Ist mein erster Versuch Objektorientiert zu coden
* wenn Ihr Verbesserungsvorschläge habt schickt sie
* bitte an hide@address.com
*
* Wie diese Klasse Funktioniert seht ihr am besten in
* beispiel.php .... have fun ;)
*
* Kurzinfo:
* Gebt der Methode 'checkidd' Eine ausweisnummer mit
* allen '<'-Zeichen und sie gibt ein Array zurück.
* 1=richtig 0=falsch
* Array
* (
* [0]=> 1 / 0 Syntax
* [1]=> 1 / 0 Chechsumme 1. Zahlenreihe
* [2]=> 1 / 0 Chechsumme 2. Zahlenreihe
* [3]=> 1 / 0 Chechsumme 3. Zahlenreihe
* [4]=> 1 / 0 Gesammtchechsumme
* (Die Zahl ganz am ende)
* [5]=> Ausweisnummer
* [6]=> Geburtsdatum (Format: dd.mm.yy)
* )
*
* Ändert was ihr wollt aber lasst bitte diesen
* Kommentar stehen.
\*****************************************************/
class iddcheck
{
function checkidd($string)
{
/*
* Überprüfung ob die Ausweisnummer auch das richtige Format hat ...
* Bsp.: 1234567890D<<1234567<1234567<<<<<<<1
*/
if(preg_match("/^([0-9]{10})D<<([0-9]{7})<([0-9]{7})[<]{7}([0-9]{1})$/", $string, $regs))
{
$ergebnis[]=1;
/*
* Überprüfung der Checksumme der 1. Zahlenreihe ...
* Bsp.: 1234567890D<<1234567<1234567<<<<<<<1
* die da-^^^^^^^^^
*/
if($this->checksum($regs[1]))
$ergebnis[]=1;
else
$ergebnis[]=0;
/*
* Überprüfung der Checksumme der 2. Zahlenreihe ...
* Bsp.: 1234567890D<<1234567<1234567<<<<<<<1
* die da-^^^^^^
*/
if($this->checksum($regs[2]))
$ergebnis[]=1;
else
$ergebnis[]=0;
/*
* Überprüfung der Checksumme der 3. Zahlenreihe ...
* Bsp.: 1234567890D<<1234567<1234567<<<<<<<1
* die da-^^^^^^
*/
if($this->checksum($regs[3]))
$ergebnis[]=1;
else
$ergebnis[]=0;
$numbers=$regs[1] . $regs[2] . $regs[3] . $regs[4];
/*
* Überprüfung der Gesammtchecksumme
* Bsp.: 1234567890D<<1234567<1234567<<<<<<<1
* die da-^^^^^^^^^^ ^^^^^^^ ^^^^^^^
*/
if($this->checksum($numbers))
$ergebnis[]=1;
else
$ergebnis[]=0;
/*
* Rückgabe der Ausweisnummer und des Geburtsdatum
*/
$ergebnis[]=$regs[1];
$ergebnis[]=(substr($regs[2],4,2) . "." . substr($regs[2],2,2) . "." . substr($regs[2],0,2));
}
else
{
for($i=1; $i<=7; $i++)
{
$ergebnis[]=0;
}
}
return $ergebnis;
}
/*
* Diese Methode überprüft die Checksumme einer Zahlenreihe
* Antwortet mit true oder false
*/
function checksum($zahlenreihe)
{
$multi=7;
for($i=1; $i<strlen($zahlenreihe); $i++)
{
$geaendert=0;
$zeichen=substr($zahlenreihe,$i-1,1);
$ergebnis=$ergebnis+($zeichen*$multi);
$test=$zeichen*$multi;
if($multi==7)
{
$multi=3;
$geaendert=1;
}
if($multi==3 && $geaendert!=1)
{
$multi=1;
$geaendert=1;
}
if($multi==1 && $geaendert!=1)
{
$multi=7;
$geaendert=1;
}
}
$erg_check=substr($ergebnis,strlen($ergebnis)-1,1);
$org_check=substr($zahlenreihe,strlen($zahlenreihe)-1,1);
if($erg_check==$org_check)
return true;
else
return false;
}
}
?>