Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Walidacja NIP, REGON...
Daimos
post
Post #1





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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?


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Diwi
post
Post #2





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

Ostrzeżenie: (0%)
-----


Jeśli chodzi o poprawność PESEL to:
http://pl.wikipedia.org/wiki/Pesel#Cyfra_kontrolna
a NIP:
http://pl.wikipedia.org/wiki/NIP

Pozdrawiam
Go to the top of the page
+Quote Post
Sokal
post
Post #3





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 8.02.2007

Ostrzeżenie: (10%)
X----


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


--------------------
Jabber/E-Mail: dominiksokal[at]gmail.com | GG: #3795571
Go to the top of the page
+Quote Post
Daimos
post
Post #4





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
DjKermit
post
Post #5





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 18.06.2005

Ostrzeżenie: (0%)
-----


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.

Ten post edytował DjKermit 17.06.2007, 21:43:20


--------------------
emiker
Go to the top of the page
+Quote Post
fridek
post
Post #6





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 19.12.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
DeyV
post
Post #7





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




http://phpedia.pl/wiki.php?title=FAQ#Porady_praktyczne - punkt 15


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
Daimos
post
Post #8





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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

Ten post edytował my salsa 18.06.2007, 14:15:37


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 09:19