PHP Classes

hrwsBLZ: German bank identification code server

Recommend this page to a friend!
  Info   View files Example   View files View files (4)   DownloadInstall with Composer Download .zip   Reputation   Support forum (3)   Blog    
Ratings Unique User Downloads Download Rankings
StarStarStar 57%Total: 596 This week: 1All time: 5,218 This week: 560Up
Version License PHP version Categories
hrwsblz 1.0.23Freeware5PHP 5, Databases, E-Commerce, Finances
Description 

Author

This package is specific mainly for applications used in Germany Germany .

This class can create and initialize a database table to insert or query German bank identification codes.

It can also verify account numbers matching a given bank identification code or a german IBAN.

The Deutsche Bundesbank provides formatted data files with all valid german bank identification codes.

The class can import these files and use it for payment data validation.

Picture of Heiko Rettinger
  Performance   Level  
Name: Heiko Rettinger <contact>
Classes: 2 packages by
Country: Germany Germany
Age: 47
All time rank: 2375148 in Germany Germany
Week rank: 416 Up16 in Germany Germany Up

Example

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Class Demo: hrwsBLZ (PHP5)</title>
<style type="text/css">
    body {
        margin: 0px;
        padding: 0px;
        top: 0px;
        left: 0px;
        font-family: verdana, helvetica, sans-serif;
        font-size: 0.9em;
        color: #000;
        background: #DFE;
    }
    a {
        font-weight: bold;
        text-decoration: underline;
        color: #243;
    }
    a:hover {
        text-decoration: none;
    }
    div.menu {
        position: absolute;
        margin: 0px auto auto 0px;
        padding: 10px;
        width: 180px;
        font-size: 0.8em;
        background: #BBB;
    }
    div.main {
        position: absolute;
        margin: 0px auto auto 200px;
        padding: 10px;
        width: 580px;
    }
    div.title {
        margin: 10px;
        padding: 5px;
        border: 1px solid;
        font-size: 1.5em;
        font-weight:bold;
        background: #FFF;
    }
    div.error {
        margin: 10px;
        padding: 5px;
        font-weight:bold;
        background: #FAA;
    }
    div.info {
        margin: 10px;
        padding: 5px;
        font-weight:bold;
        background: #AFA;
    }
</style>
</head>

<body>
<?php
  $content
= "";
   
// configuration array for class:
   
$conf = array("sqluser" => "", // MySQL Username
                   
"sqlpass" => "", // MySQL Password
                   
"sqldb" => "", // MySQL Database
                   
"sqltable" => "hrv_blz", // MySQL Databasetable
                   
"clearb4import" => false); // clear Databasetable before importing Datasets
   
include('hrwsBLZ.class5.php');
   
$blz = new hrwsBLZ($conf);
    if (
$blz->lasterror != "") {
   
$content .= "<div class=\"error\">".$blz->lasterror."</div>\n";
   
$blz->lasterror = "";
  }
   
$mode = isset($_REQUEST['mode'])?$_REQUEST['mode']:'';
    if (
$mode != '') $forlink = "?mode=".$mode;
?>
<div class="menu">
<div class="title">Menu</div>
<a href="?mode=file">import file</a><br />
<a href="?mode=text">import text</a><br />
<a href="?mode=upfile">import update file</a><br />
<a href="?mode=uptext">import update text</a><br />
<a href="?mode=query">query</a><br />
<a href="?mode=verify">verify Kto</a><br />
<a href="?mode=viban">verify IBAN</a><br />
<a href="?mode=vdeiban">verify DE-IBAN</a><br />
<hr />
<a href="?mode=create">create table</a><br />
<a href="?mode=clear">clear table</a><br />
<a href="?mode=drop">drop table</a><br />
<a href="?mode=entries">entries</a><br />
</div>
<div class="main">
<div class="title">hrwsBLZ: Class Demo (PHP5)</div>
<?php
   
if (isset($content)) echo $content;
    switch(
$mode) {
    default:
        echo
"Please select a function from the left menu.";
    break;
    case
'file':
        if (isset(
$_GET['fname'])) {
            if (
$blz->blz_importfile($_GET['fname']) !== false)
                echo
"<div class=\"info\">file successfully imported</div>\n";
            else echo
"<div class=\"error\">".$blz->lasterror."</div>\n";
        } else {
            echo
"Filelist:<br>\n";
           
$blist = dir('.');
            while (
$entry = $blist->read()) {
                if ((!
is_dir($entry)) && ($entry != '.') && ($entry != '..') && (strpos($entry, ".txt") !== false))
                    echo
"<a href=\"".$forlink."&amp;fname=".$entry."\">".$entry."</a><br>\n";
            }
        }
    break;
    case
'text':
        if (isset(
$_POST['ftext'])) {
            if (
$blz->blz_importtext($_POST['ftext']) !== false)
                echo
"<div class=\"info\">text successfully imported</div>\n";
            else echo
"<div class=\"error\">".$blz->lasterror."</div>\n";
        } else {
            echo
"Datatext:<br>\n<form action=\"".$forlink."\" method=\"post\">".
               
"<textarea name=\"ftext\" rows=\"15\" cols=\"80\"></textarea><br>\n".
               
"<input type=\"Submit\" value=\"import\"></form>";
        }
    break;
    case
'upfile':
        if (isset(
$_GET['fname'])) {
            if (
$blz->blz_importupdatefile($_GET['fname']) !== false)
                echo
"<div class=\"info\">file successfully imported</div>\n";
            else echo
"<div class=\"error\">".$blz->lasterror."</div>\n";
        } else {
            echo
"Update Filelist:<br>\n";
           
$blist = dir('.');
            while (
$entry = $blist->read()) {
                if ((!
is_dir($entry)) && ($entry != '.') && ($entry != '..') && (strpos($entry, ".txt") !== false))
                    echo
"<a href=\"".$forlink."&amp;fname=".$entry."\">".$entry."</a><br>\n";
            }
        }
    break;
    case
'uptext':
        if (isset(
$_POST['ftext'])) {
            if (
$blz->blz_importupdatetext($_POST['ftext']) !== false)
                echo
"<div class=\"info\">text successfully imported</div>\n";
            else echo
"<div class=\"error\">".$blz->lasterror."</div>\n";
        } else {
            echo
"Update Datatext:<br>\n<form action=\"".$forlink."\" method=\"post\">".
               
"<textarea name=\"ftext\" rows=\"15\" cols=\"80\"></textarea><br>\n".
               
"<input type=\"Submit\" value=\"import\"></form>";
        }
    break;
    case
'query':
        if (isset(
$_REQUEST['q'])) {
            if (isset(
$_REQUEST['n']) && $_REQUEST['n']!="") {
                echo
"<div style=\"font-weight:bold;\">Kto-nr ".$_REQUEST['n']." is ".
                    (
$blz->blz_isKtoValid($_REQUEST['n'],$_REQUEST['q'])?"valid":"invalid").
                   
".</div><br>\n";
            }
           
$num = $blz->blz_queryblz($_REQUEST['q']);
            if (
$num !== false) {
                echo
"Results: ".$num."<br>\n";
               
$pos = isset($_GET['pos'])?$_GET['pos']:0;
               
$i = 0;
               
$foralink = $forlink."&amp;q=".$_REQUEST['q']."&amp;pos=";
                foreach(
$blz->data as $key => $values) {
                    if (
$pos == $i) {
                        echo
"Entry: ".$values['hrz_id']." BLZ: ".$values['hrz_blz']." PZV: ".$values['hrz_pzc']."<br>\n".
                           
"Name: ".$values['hrz_namelong']."<br>\nTown: ".$values['hrz_zipcode']." ".
                           
$values['hrz_town']."<br>\n";
                    } else {
                        echo
"Entry: <a href=\"".$foralink.$i."\">".$values['hrz_id']."</a><br>\n";
                    }
                   
$i++;
                }
            } else echo
"<div class=\"error\">".$blz->lasterror."</div>\n";
        } else {
            echo
"<form action=\"".$forlink."\" method=\"post\">Search bank identification code:\n".
               
"<input type=\"Text\" name=\"q\" maxlength=\"10\"><br><br>\n".
               
"with Kto-nr. check: <input type=\"Text\" name=\"n\" maxlength=\"12\"><br>\n".
               
"<input type=\"Submit\" value=\"search\"></form>\n";
        }
    break;
  case
'verify':
   
$b = isset($_REQUEST['b'])?$_REQUEST['b']:"";
   
$n = isset($_REQUEST['n'])?$_REQUEST['n']:"";
   
$m = isset($_REQUEST['m'])?strtoupper($_REQUEST['m']):"";
    echo
"<form action=\"".$forlink."\" method=\"post\">\n".
     
"Verify Kto-nr: <input type=\"Text\" name=\"n\" maxlength=\"12\" value=\"".$n."\" />\n".
     
"with Method <input type=\"Text\" name=\"m\" maxlength=\"2\" value=\"".$m."\" />\n".
     
"<input type=\"Submit\" value=\"verify\"><br />\n".
           
"optional BLZ: <input type=\"Text\" name=\"b\" maxlength=\"8\" value=\"".$b."\" />\n".
           
" (required for Method 52, 53, B6, C0)</form>\n";
    if (
$n<>"" && $m<>"") {
            if (
$b <> "") $blz->data[] = array('hrz_blz' => $b);
      echo
"<p>Testresult: Kto is ".($blz->blz_ValidateKtoByMethod($n, $m)?"valid":"invalid")."<br />\n";
      if (
$blz->lasterror != "") echo "<div class=\"error\">".$blz->lasterror."</div>\n";
    }
  break;
    case
'viban':
       
$i = isset($_REQUEST['i'])?$_REQUEST['i']:"";
    echo
"<form action=\"".$forlink."\" method=\"post\">\n".
     
"Verify IBAN: <input type=\"Text\" name=\"i\" maxlength=\"32\" value=\"".$i."\" />\n".
     
"<input type=\"Submit\" value=\"verify\"><br />\n".
           
"</form>\n";
        if (
$i<>"") {
            echo
"<p>Testresult: IBAN is ".($blz->blz_isIBANvalid($i)?"valid":"invalid")."</p>\n";
            if (
$blz->lasterror != "") echo "<div class=\"error\">".$blz->lasterror."</div>\n";
        }
    break;
    case
'vdeiban':
       
$i = isset($_REQUEST['i'])?$_REQUEST['i']:"";
    echo
"<form action=\"".$forlink."\" method=\"post\">\n".
     
"Verify German IBAN: <input type=\"Text\" name=\"i\" maxlength=\"32\" value=\"".$i."\" />\n".
     
"<input type=\"Submit\" value=\"verify\"><br />\n".
           
"</form>\n";
        if (
$i<>"") {
            echo
"<p>Testresult: IBAN is ".($blz->blz_isIBANvalid($i)?"valid":"invalid").
           
", in Kto-Check it is ".($blz->blz_checkKtoFromIBAN($i)?"valid":"invalid")."</p>\n";
            if (
$blz->lasterror != "") echo "<div class=\"error\">".$blz->lasterror."</div>\n";
            else {
                echo
"Results: ".count($blz->data)."<br>\n";
               
$pos = isset($_GET['pos'])?$_GET['pos']:0;
               
$i = 0;
               
$foralink = $forlink."&amp;i=".$_REQUEST['i']."&amp;pos=";
                foreach(
$blz->data as $key => $values) {
                    if (
$pos == $i) {
                        echo
"Entry: ".$values['hrz_id']." BLZ: ".$values['hrz_blz']." PZV: ".$values['hrz_pzc']."<br>\n".
                           
"Name: ".$values['hrz_namelong']."<br>\nTown: ".$values['hrz_zipcode']." ".
                           
$values['hrz_town']."<br>\n";
                    } else {
                        echo
"Entry: <a href=\"".$foralink.$i."\">".$values['hrz_id']."</a><br>\n";
                    }
                   
$i++;
                }
            }
        }
    break;
    case
'create':
        if (isset(
$_GET['sure'])) {
            if (
$blz->blz_createtable()) echo "<div class=\"info\">table successfully created</div>\n";
            else echo
"<div class=\"error\">".$blz->lasterror."</div>\n";
        } else echo
"Please click <a href=\"".$forlink."&amp;sure=1\">here</a> to create the database table<br>\n";
    break;
    case
'clear':
        if (isset(
$_GET['sure'])) {
            if (
$blz->blz_cleartable()) echo "<div class=\"info\">table successfully cleared</div>\n";
            else echo
"<div class=\"error\">".$blz->lasterror."</div>\n";
        } else echo
"Please click <a href=\"".$forlink."&amp;sure=1\">here</a> to clear the database table<br>\n";
    break;
    case
'drop':
        if (isset(
$_GET['sure'])) {
            if (
$blz->blz_droptable()) echo "<div class=\"info\">table successfully dropped</div>\n";
            else echo
"<div class=\"error\">".$blz->lasterror."</div>\n";
        } else echo
"Please click <a href=\"".$forlink."&amp;sure=1\">here</a> to drop the database table<br>\n";
    break;
    case
'entries':
        if (
$blz->blz_getnumentries() !== false) echo "Entries in Database: ".$blz->blz_getnumentries();
        else echo
"<div class=\"error\">".$blz->lasterror."</div>";
    break;
    }
?>

</div>


</body>
</html>


Details

Class: hrwsBLZ created on: August 6th, 2003 last updated: April 8th, 2018 Author: Heiko Rettinger (c) by hr-ws.de 2003-2018 E-Mail: heiko@hr-ws.de Filename: hrwsBLZ.readme.txt Version: v1.0.23 english description: This class can create and handle a database table to insert and query german bank identification codes. Now you can also verify account numbers matching a given bank identification code. The "Deutsche Bundesbank" provides formatted datafiles with all valid German bank identification codes. With this class, you can import these files and use it for payment data validation. The usage of this class is only reasonable in Germany. If you require an english documentation please contact me. Deutsche Beschreibung: Mit dieser Klasse lässt sich eine Tabelle mit deutschen Bankleitzahlen erzeugen und auch verwalten. Es ist nun auch möglich die Gültigkeit von Kontonummern zu einer gegebenen BLZ zu prüfen. Die Deutsche Bundesbank bietet auf ihrer Homepage vorformatierte Dateien an, die mit dieser Klasse in die Datenbank importiert werden können. Es ist möglich, dass diese Datendatei zum Importieren in mehrere Teile gesplittet werden muss, da die Datendateien mehr als 3MB umfassen. Im Juni 2006 hatte die Deutsche Bundesbank den Aufbau der Datendateien geändert. Die aktuellen Versionen respektieren dieses Format. Im Falle eines Upgrades von einer älteren Version muss die alte Datenbanktabelle entfernt und mit einer neuen ersetzt werden. Dies lässt sich mit der internen Klassenmethode blz_droptable() durchführen. Die aktuelle Tabelle kann anschließend mit blz_createtable() erzeugt werden. In dieser Version sind alle bis April 2018 veröffentlichen Prüfziffer- Verfahren implementiert, incl. der modifizierten Methode 45 die ab 4. Juni 2018 gültig ist. Die Initialisierung: Die Klasse erfordert bei der Initialisierung ein Konfigurationsarray mit folgenden Feldern: (o) sqlhost : den MySQL Server Hostnamen (Voreinstellung: "localhost") (o) sqluser : den MySQL Usernamen (Voreinstellung: "") (o) sqlpass : das MySQL Passwort (Voreinstellung: "") (b) sqldb : den MySQL Datenbanknamen (Voreinstellung: "") (b) sqltable : den MySQL Tabellennamen für die Klasse (Voreinstellung: "hrv_blz") (o) extconnid : eine MySQL Verbindungskennung, falls diese anstelle einer eigenen Verbindung genutzt werden soll. sqldb & sqltable sind dann trotzdem erforderlich (Voreinstellung: NULL), (o) clearb4import : Importverhalten (true) löscht bei einem Datenimport zuerst den kompletten Tabelleninhalt, (false) behält alle Daten bei (Voreinstellung: true) (o) = optional; (b) = wird benötigt Die Variablen: ->_cfg (array) Enthält die Klassendeklaration (Felder siehe Konfigurationsarray) ->_db (int) Enthält die aktuelle MySQL Verbindungskennung ->_corrblz (array) Array mit Korrekturen für Prüfzifferberechnungsmethoden einzelner Bankleitzahlen ->lasterror (string) Enthält den letzten Fehler wenn eine Funktion false zurücklieferte ->data (array) Enthält alle Bankinformationen, die bei einer Abfrage mit blz_queryblz() oder blz_isKtoValid() aus der Datenbank geliefert wurden Aufbau: array( lfd Nr. => array([Datenbanksatz]) [, lfd Nr. => array([Datenbanksatz]) [, ... ]] ) Datenbanksatz: hrz_id (int) lfd Nr. (von der Bundesbank vergeben) hrz_blz (int) Bankleitzahl hrz_namelong (string) Bezeichnung der Kreditinstitutsniederlassung (evtl. verkürzt) hrz_nameshort (string) Kurzbezeichnung der Kreditinstitutsniederlassung (max. 20 Zeichen) hrz_zipcode (string) Postleitzahl hrz_town (string) Ort hrz_own (int) 1 = eigene Bankleitzahl, 2 = mitgenutzte Bankleitzahl hrz_bbk (int) 1 = eigenes BBk-Girokonto, 2 = ohne hrz_deldate (datum) Datum YYYY-MM-TT HH:MM:SS der Löschung, oder 0000-00-00 00:00:00 wenn aktiv hrz_followid (int) neue lfd Nr. mit der diese Bankleitzahl ersetzt wurde oder 99999 wenn ungültig hrz_bic (string) BIC ohne DE hrz_btxname (string) Kurzbezeichnung der Kreditinstitutsniederlassung für Btx und EZÜ (max 27 Zeichen) hrz_pzc (string) Verfahren zur Prüfsummenberechnung der Kontonummern (2 Zeichen) Die Funktionen: blz_queryblz($aBLZ) Fragt die Datenbank nach einer Bankleitzahl ab. Parameter: $aBLZ (int) eine Bankleitzahl RETURN-Wert: (int) Anzahl der gefundenen Datensätze, oder (bool) false blz_isIBANvalid($aIBAN) Prüft die Gültigkeit einer IBAN anhand der zweistelligen Prüfziffer Parameter: $aIBAN (string) Die IBAN Zeichenkette beginnend mit dem Ländercode RETURN-Wert: (bool) Gültig oder Ungültig. blz_checkKtoFromIBAN($aIBAN) Prüft die Gültigkeit einer deutschen IBAN anhand der erhaltenen Kto & BLZ Parameter: $aIBAN (string) Die IBAN Zeichenkette beginnend mit dem Ländercode DE RETURN-Wert: (bool) Gültig oder Ungültig. blz_isKtoValid($aKto, [$aBLZ]) Prüft die Gültigkeit der Kontonummer. Wenn $aBLZ nicht übergeben wird setzt dies einen vorangegangenen Aufruf von blz_queryblz() voraus. Parameter: $aKto (int) die Kontonummer; $aBLZ (int) optionale BLZ RETURN-Wert: (bool) Gültig oder Ungültig. blz_getnumentries() Bestimmt die Anzahl der BLZ-Einträge Parameter: keine RETURN-Wert: (int) Anzahl der Einträge, oder (bool) false blz_importfile($aFilename) Importiert die angegebene Datei in die Datenbank Parameter: $aFilename (string) Datei mit Pfad auf dem Server RETURN-Wert: (bool) true oder false blz_importtext($aText) Importiert den angegebenen Text in die Datenbank Parameter: $aText (string) Eine Zeichenkette mit dem Format der deutschen Bundesbank RETURN-Wert: (bool) true oder false Interne Funktionen: blz_createtable() Kann benutzt werden um die Datentabelle anzulegen RETURN-Wert: (bool) true oder false blz_droptable() Kann benutzt werden um die Datentabelle vom Server zu löschen RETURN-Wert: (bool) true oder false blz_cleartable() Kann benutzt werden um die Datentabelle zu leeren RETURN-Wert: (bool) true oder false

  Files folder image Files  
File Role Description
Plain text file hrwsBLZ.class5.php Class PHP5 class file
Accessible without login Plain text file hrwsBLZ.demo5.php Example PHP5 demo
Accessible without login Plain text file hrwsBLZ.demodata.txt Data some bank identification code datas for demonstration
Accessible without login Plain text file hrwsBLZ.readme.txt Doc. english and german documentation

 Version Control Unique User Downloads Download Rankings  
 0%
Total:596
This week:1
All time:5,218
This week:560Up
 User Ratings  
 
 All time
Utility:83%StarStarStarStarStar
Consistency:66%StarStarStarStar
Documentation:41%StarStarStar
Examples:50%StarStarStar
Tests:-
Videos:-
Overall:57%StarStarStar
Rank:1613