Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Walidacja NIP, REGON...
Forum PHP.pl > Inne > Hydepark
Daimos
Witam, sory jezeli nie trafilem w dobre forum winksmiley.jpg niewiem gdzie ten temat wrzucic, bo w sumie nie chodzi tu dokladnie o PHP
jak w temacie, chodzi mi o walidacje numerow NIP i REGON, a dokladnie o algorytm sprawdzajacy
siemakuba napisal w jednym z postow przy ocenie strony:
Cytat
Pamiętaj, że zdarzają się numery NIP, które z punktu widzenia urzędowego są całkowicie poprawne, natomiast nie są poprawne z punktu widzenia algorytmu sprawdzającego - mają np. błędną sumę kontrolną. W związku z tym zalecane jest umożliwienie podania numeru NIP, który teoretycznie nie jest poprawny.

pozdr.

DjKermit natomiast :
Cytat
A możesz podać jakiś przykład questionmark.gif
Bo mi się wydawało że algorytm jest stworzony po to by generować NIPy a nie po to by je walidować, jeśli to pierwsze to taka sytuacja teoretycznie nie ma prawa istnieć.

i dyskusja sie urwala, a ciekawi mnie to bo napisalem juz wiele systemow w ktorych jest sprawdzanie NIP, jezeli jest to algorytm wadliwy to moga byc problemy. Osobiscie uwazalem ze jest jak mowi DjKermit, no ale siemakuba bez powodu domyslam sie ze tego nie napisal. Moze ktos z was cos o tym wie?
Diwi
Jeśli chodzi o poprawność PESEL to:
http://pl.wikipedia.org/wiki/Pesel#Cyfra_kontrolna
a NIP:
http://pl.wikipedia.org/wiki/NIP

Pozdrawiam
Sokal
A dokładniej pewnie o to chodzi:
Cytat
(...)(przeważnie nie występuje cyfra 0). Kod urzędu skarbowego może zawierać cyfrę 0 np. numer NIP 106-00-00-062 jest prawidłowym numerem NIP (w 2004 roku dla kilku urzędów skarbowych uczyniono wyjątek od reguły) a w tym przypadku kod 106 oznacza Małopolski Urząd Skarbowy w Krakowie(...)


Z wikipedii
Daimos
Cytat
(w 2004 roku dla kilku urzędów skarbowych uczyniono wyjątek od reguły)
czyli rozumiem ze w zwyklych firmach, wyjatek od reguly nie wystepuje
DjKermit
Cytat(my salsa @ 17.06.2007, 22:38:34 ) *
czyli rozumiem ze w zwyklych firmach, wyjatek od reguly nie wystepuje

Wygląda na to że występuje bo firma z Małopolski nadal jest "zwykłą" firmą.

  1. <?php
  2. /**
  3.  * Checks whether given string is correct NIP number (tax identification number)
  4.  * Acceptable formats '118-175-57-20', '118 171 57 20', '1181715720'
  5.  *
  6.  * @param mixed $nip - NIP number in string or int format
  7.  * @return boolean
  8.  * @access public
  9.  */
  10. static public function NIP($nip) {
  11. if ($nip == 0) return false;
  12. $chr_to_replace = array('-', ' '); // get rid of these characters
  13. $nip = str_replace($chr_to_replace, '', $nip);
  14. if (! is_numeric($nip)) return false;
  15. $weights = array(6, 5, 7, 2, 3, 4, 5, 6, 7);
  16. $digits = str_split($nip);
  17. $digits_length = count($digits);
  18. for ($i = 1; $i < $digits_length; $i++) {
  19. if ($digits[0] != $digits[$i]) break;
  20. if ($digits[0] == $digits[$i] && $i == $digits_length - 1) return false;
  21. }//end for
  22. $in_control_number = intval(array_pop($digits));
  23. $sum = 0;
  24. $weights_length = count($weights);
  25. for ($i = 0; $i < $weights_length; $i++) {
  26. $sum += $weights[$i] * intval($digits[$i]);
  27. }//end for
  28. $modulo = $sum % 11;
  29. $control_number = ($modulo == 10) ? 0 : $modulo;
  30. return $in_control_number == $control_number;
  31. }
  32. ?>


Ten kod działa poprawnie, przynajmniej biorąc pod uwagę nr z wiki.
fridek
W liceum bawiłem się w walidacje PESEL, na ok. 40 osób sprawdzonych znalazło się kilka z niepoprawnym numerem. Nie wiem z czego to wynika, wydaje mi się, że odpowiednio dawno temu wszystkie numery identyfikacyjne były robione ręcznie. Nie wiem jak ma się sprawa z NIP, ale można spodziewać się że tak samo. Prawdopodobieństwo błędu nie jest duże, ale musisz je uwzględnić.
Co do samych numerów PESEL, są osoby które w ogóle go nie mają. Mniejszości narodowe w Polsce mają jakieś dziwne zasady nadawania obywatelstwa i po prostu niektórzy nie dostają PESEL.
DeyV
http://phpedia.pl/wiki.php?title=FAQ#Porady_praktyczne - punkt 15
Daimos
zakrecilem sie wczesniej z tym winksmiley.jpg DjKermit dzieki za kod
a jesli chodzi o PESEL
juz ze 3 osoby mi o tym pisza, a ja wcale o pesel nie pytalem smile.gif chodzilo tylko o NIP i REGON winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.