Jak sprawdzić czy numer rachunku bankowego (NRB) został wpisany poprawnie, PHP Skrypty


[PHP] Jak sprawdzić czy numer rachunku bankowego (NRB) został wpisany poprawnie?

0x01 graphic

Chcesz sprawdzić czy użytkownik podał prawidłowy numer rachunku bankowego i nie popełnił w nim błędu.

0x01 graphic

Nie można sprawdzić czy podany numer rachunku istnieje w banku i korzysta z niego jakaś firma lub osoba. Można jednak łatwo sprawdzić czy cyfry w numerze zostały wpisane poprawnie i użytkownik nie popełnił podczas wpisywania NRB błędu. Ma to kluczowe znaczenie gdy w formularzu internetowym klient podaje numer rachunku.

Numer rachunku składa się z 26 cyfr, z których dwie pierwsze zawierają cyfrę kontrolną, osiem kolejnych zawiera numer jednostki organizacyjnej banku, a 24 ostatnie numer porządkowy rachunku w tym banku. Cały numer wygląda np. tak:

07 10901 0790 4173 3822 600 0401

Aby sprawdzić czy numer został poprawnie wpisany, należy go uzupełnić o dodatkowy kod kraju, a cyfry przemnożyć przez odpowiednie wagi i całość podzielić modulo. Zobacz jak przeprowadzić wszystkie operacje krok po kroku.

Na początku do numeru rachunku trzeba dodać kod Polski (PL) i dwa zera. Oczywiście litery PL powinny zostać zamienione na kod cyfrowy 25 21. W sumie dodajemy sześć cyfr, zawsze takich samych: 252100.

Teraz mamy numer 32 cyfrowy. Na chwilę zapominamy o pierwszych dwóch cyfrach (07), które stanowią sumę kontrolną. Mamy więc numer składający się z 30 cyfr w postaci:

10901 0790 4173 3822 600 0401 252100

Każdą cyfrę należy teraz przemnożyć przez odpowiednią wagę, które wynoszą po kolei: 57, 93, 19, 31, 71, 75, 56, 25, 51, 73, 17, 89, 38, 62, 45, 53, 15, 50, 5, 49, 34, 81, 76, 27, 90, 9, 30, 3, 10, 1, a uzyskane wyniki dodać do siebie. Wygląda to mniej więcej tak: 1*57 + 0*93 + 9*19 + itd... = 3583.

Otrzymany wynik należy podzielić modulo 97 i odjąć od 98. Modulo to całkowita reszta z dzielenia przez 97. Suma kontrolna wynosi więc: 98 - 3583 mod 97 = 7. Jeżeli otrzymana liczba jest mniejsza niż 10 dodaje się zero wiodące z przodu, a więc ostatecznie suma kontrolna to 07.

Faktycznie - przed numerem rachunku jest liczba 07, co oznacza, że wpisany numer jest poprawny i nie została zrobiona literówka lub nie pomyliliśmy liczb. Teraz zapiszmy to samo w postaci skryptu PHP:

<?

function nrb($nrb) {

$nrb=preg_replace("/[^0-9]/","",$nrb);

if (strlen($nrb)<>26) return 0;

$nrb .="252100";

$wagi = array(57,93,19,31,71,75,56,25,51,73,17,89,38,62,45,

53,15,50,5,49,34,81,76,27,90,9,30,3,10,1);

for ($i=0; $i<30;$i++) $suma += $nrb[$i+2]*$wagi[$i];

$liczba = sprintf("%02d", 98 - $suma%97);

if ($nrb[0]==$liczba[0] and $nrb[1]==$liczba[1]) return 1;

return 0;

}

$numer="07109010790417338226000401";

if (nrb($numer)) echo "NRB poprawny";

else echo "NRB błędny";

?>

Do funkcji nrb() przekazujemy numer, który może być zapisany ze spacjami lub łącznikami albo jednym ciągiem. Wyrażenie regularne zostawi w zmiennej $nrb tylko same cyfry. Powinno ich być 26.

Dodajemy do ciągu oznaczenie kraju i dwa zera, czyli "252100". Następnie sumujemy 30 cyfr mnożąc je przez wagi, omijając dwie pierwsze cyfry, z którymi będziemy potem porównywać wynik.

Funkcja sprintf() uzupełnia wynik do dwóch pozycji, gdy wynik wyjdzie mniejszy niż 10. W funkcji tej odejmujemy od 98 sumę podzieloną modulo przez 97.

Pozostało tylko porównać czy liczby z wyniku odpowiadają pierwszym cyfrom z rachunku. Jeżeli tak, można zwrócić 1, co sprawi, że warunek będzie prawdziwy i potwierdzi poprawnie wpisany NRB.



Wyszukiwarka

Podobne podstrony:
Jak sprawdzić czy istnieje podany użytkownik i jego hasło jest poprawne, PHP Skrypty
Jak sprawdzić czy numer ewidencyjny PESEL został wpisany poprawnie
Jak sprawdzic czy pracodawca od Nieznany
Jak sprawdzić czy domena istnieje i do kogo należy, PHP Skrypty
Jak sprawdzić czy w bazie danych istnieje aktualnie dodawana treść, PHP Skrypty
Jak sprawdzić czy zmienna przechowuje liczbę całkowitą lub rzeczywistą, PHP Skrypty
Jak sprawdzić czy pracodawca odprowadza składki ZUS
Jak sprawdzić czy dwa wyrazy są dla siebie anagramami (są permutacją, PHP Skrypty
Jak sprawdzić czy nasz komputer nie jest zainfekowany(1)
Jak sprawdzić, czy RAM działa prawidłowo
Jak sprawdzic czy wykonawca dysponuje osobami zdolnymi do realizacji zamowienia
jak sprawdzic czy zdjecie ma 10x15
Jak sprawdzić czy opony mają właściwe ciśnienie
Jak zrobić stronę dostępną na hasło tylko dla wybranych użytkowników, PHP Skrypty
Jak wyświetlić zawartość katalogu jako linki służące do pobrania plików, PHP Skrypty
Jak chronić adres e-mail na stronie przed spamem stosując przekierowanie, PHP Skrypty
jak wyliczyc kiedy nastapi wschod i zachod slonca dla dowolnego dnia, PHP Skrypty

więcej podobnych podstron