Jejku strasznie długi i niezrozumiały ten kod
moja propozycja po łepkach
<?php
function validate_regon($regon) {
if($regon) && (spełnione warunki dla regonu długość i suma kontrolna)
return true;
else return false;
}
function validate_nip($nip) {
if($nip) && (spełnione warunki dla nipu długość i suma kontrolna)
return true;
else return false;
}
function validate_pesel($pesel) {
if($pesel) && (spełnione warunki dla pesla długość i suma kontrolna)
return true;
else return false;
}
if ((validate_regon($_POST['regon_id']) && validate_nip($_POST['nip_id'])) || validate_pesel($_POST['pesel_id'])) {
... spełnione warunki wykonaj kod
}
?>
Może być błąd bo szybko pisałem musisz poddać w funkcjach dane do validacji a to bardziej skomplikowane bo długość to nie wszystko (i str_len tu niewystarczy) poszukaj artykułów o tym jakie warunki mają te dane spełniać i co jak obliczyć
pogrzebałem jeszcze troszeczkę i znalazłem to napewno ci sie przyda
Dla identyfikatora NIP
wagi wynoszą kolejno 6,5,7,2,3,4,5,6,7 Modulo 11
(i nie odejmujemy już tej wartości od 10!)
Przykład dla numeru identyfikacyjnego NIP 768-000-24-66
6 5 7 2 3 4 5 6 7 -> wagi
* 7 6 8 0 0 0 2 4 6 -> nr NIP (bez cyfry kontr.)
---------------------
suma= (6*7+5*6+7*8+2*0+3*0+4*0+5*2+6*4+7*6)=
= ( 42+ 30+ 56+ 0+ 0+ 0+ 10+ 24+ 42)= 204
204 mod 11 = 6 ----> cyfra kontrolna
Dla identyfikatora REGON 7-mio cyfrowego
wagi wynoszą kolejno 2,3,4,5,6,7
Dla identyfikatora REGON 9-cio cyfrowego
wagi wynoszą kolejno 8,9,2,3,4,5,6,7
sumę dzielimy Modulo 11
Przykład dla numeru identyfikacyjnego REGON 590096454
8 9 2 3 4 5 6 7 -> wagi
* 5 9 0 0 9 6 4 5 -> nr REGON (bez cyfry kontr.)
-------------------
suma= (8*5+9*9+2*0+3*0+4*9+5*6+6*4+7*5)=
= ( 40+ 81+ 0+ 0+ 36+ 30+ 24+ 35)= 246
246 mod 11 = 4 ----> cyfra kontrolna
Uwaga:
warto zauważyć, że wynik dzielenia modulo 11 może wyjść 10.
Ponieważ cyfry "10" brak (a znaku X jak w numerze ISBN się
tu nie stosuje) to w tym przypadku jako cyfrę kontrolną
należy przyjąć 0.