kostenloser Webspace werbefrei: lima-city


Rechnen mit Rest (modulo) in PHP

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    myvotes

    myvotes hat kostenlosen Webspace.

    Hallo

    ich möchte die Prüfsumme für Erstellung der IBAN ermitteln, BSP siehe HIER

    bis Prüfsumme alles OK,
    aber bei "Prüfsumme Modulo 97" kommt bei mir 78 raus anstatt 90 wie im BSP ?!

    wenn ich am Taschenrechner brechne:

    700901001234567890131400 MOD 97 = 90


    aber wenn ich am Webspace mit PHP das brechne:

    $modulo = (700901001234567890131400 % 97); // --- Erbebnis: 78


    unterschiedliche Ergebnisse ? ... der Wert: 90 müsste richtig sein,
    ... was ist mit % in PHP anders ... sollte doch auch 90 sein ?!


    PS: gibt es eine kostenlose API zum ermitteln der BIC + IBAN
    (mit Parameter: Ländercode, BLZ und KTO-Nr)
    die ich gefunden habe wollen Geld für API-Calls :(

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. g****e

    Das ist auch relativ logisch... Mit Javascript kommt zB 38 raus.

    Folgendes: Der Datentyp Integer hat eine begrenzte Anzahl von Bits zur Verfügung. In der Regel ist dies 2^31 Bits, was nur bummelige 2mrd sind. Deine Zahl mit 700.901.001.234.567.890.131.400 braucht aber mindestens 80 Bit, vorzeichenbehaftet 81 Bit, um gespeichert zu werden. Raus kiegst du das, wenn du ld(700901001234567890131400) rechnest.
    Das heißt, du musst die Zahl als String halten, und sie vorher zerlegen und verarbeiten, sodass du die wirklich verarbeitete Zahl nur im Bereich der 31 Bits hast.
    Der Einfachheit halber Verweise ich auf http://www.michael-schummel.de/2007/10/05/iban-prufung-mit-php/

    Liebe Grüße
  4. Autor dieses Themas

    myvotes

    myvotes hat kostenlosen Webspace.

    Danke
    ... mit PHP bcmod() funktioniert es wohl auch mit sooo großen Zahlen

    hier meine Funktion:

    // --------------------------------------------------------------------- 
    
    function make_iban($blz, $kto, $country='DE') { 
    
    	$blz8 = str_pad ( $blz, 8, '0', STR_PAD_RIGHT);
    	$kto10 = str_pad ( $kto, 10, '0', STR_PAD_LEFT);
    	$bban = $blz8 . $kto10;
    	
    	$country = strtoupper($country); 
    	$ncc1 = (ord($country[0]) - 64) + 9; 
    	$ncc2 = (ord($country[1]) - 64) + 9; 
    	$ckey = $ncc1.$ncc2.'00'; 
    	
    	$pruefsumme = $bban . $ckey;
    	$modulo = bcmod($pruefsumme,97);
    	$pruefziffer = str_pad ( 98 - $modulo, 2, '0', STR_PAD_LEFT);
    	
    	$iban = $country . $pruefziffer . $bban;
    	
    	return $iban;
    	
    }
    
    // ---------------------------------------------------------------------


    jetzt brauche ich noch eine Liste der BIC (Business Identifier Code)
    ... für Deutschlad Daten gefunden, aber der ganze Rest der Welt ?



    Beitrag zuletzt geändert: 4.11.2013 7:02:56 von myvotes
  5. Da wirst du so ohne weiteres gar nichts finden.

    Die offizielle DB dazu findest du hier: https://www2.swift.com/directories/
    Allerdings musst du eine Bank sein um dir das herunterladen zu können ;-)

    Da kannst du mir durchaus glauben, da ich selbst für Banken gearbeitet habe und wir genau aus diesem Grund immer eigene Repositories benutzt haben.
    Diese internen Repositories enthielten dann alle wichtigen BICs, das heißt vor allem die BICs für die Kanalinseln wie z.B. Jersey und die französischen Überseegebiete wie z.B. Mauritius, da die Ländercodes dieser Gebiete von denen der IBANs abweichen. Bei allen anderen BICs kann man die BICs einer Plausibilitätsprüfung unterziehen und damit relativ sicher feststellen, ob diese korrekt sind.

    Wie gesagt, man findet das Repository für Deutschland, das du ja auch schon verlinkt hast und auch noch ein paar andere aber nicht alle, ist leider so.

    Alternativ gibt es aber im Internet einige Seiten, auf denen man BICs erfragen kann, eventuell bietet ja eine davon eine API an, die du nutzen könntest, z.B. über REST oder SOAP.

    Mit freundlichen Grüßen

    * Edit: Link verlinkt ;-)

    Beitrag zuletzt geändert: 3.11.2013 15:22:20 von nemoinho
  6. Autor dieses Themas

    myvotes

    myvotes hat kostenlosen Webspace.

    Danke für die Info

    ok, also für wirklich ALLE Länder brauche ich die BIC nun auch nicht,
    die für Europa (+ USA + Canada) würden mir schon ausreichen

    ich habe auch schon so APIs (mit REST / SOAP) gefunden,
    aber die wollen Geld für die API-Anfragen, das kommt nicht in Frage


    Habe noch eine Ergänzung zu meiner Funktion make_iban()
    .... Fehler wenn Ländercode in Kleinbuchstaben übergeben wird ($country='de')
    daher noch oben mit rein:
    $country = strtoupper($country);

    denn die Berechnung der Länder-Zahl $ckey geht von ASCIi Großbuchstaben aus

    ... hab's mit EDIT oben eingefügt.

  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!