identificationNumbers - wersja ulepszona
Odświeżam pakiet identificationNumbers.
Ciężko jest pilnować wszystkich wyjątków, które rzucają na kolana walidatory. Niech za przykład posłuży REGON 000000000, który przejdzie walidację, bo jak wiadomo mnożenie przez zero zawsze daje zero, a cała magia cyfr i sum kontrolnych w tym pakiecie opiera się na mnożeniu. Ciąg 000001100 również jest poprawnym REGONEM, 0120000 - też. Takich ciągów, które mogą zniweczyć nasze starania jest jeszcze dużo - tyle, że właściwie nie da się tego uwzględnić w bibliotece. Musimy zakładać dobrą wolę użytkownika, i wierzyć, że wklepany do formularza REGON nie jest jednym z tych, które można wygenerować. Jeśli nie ufamy - pozostaje czarna lista.
Taką funkcjonalność dodałem do walidatorów PESEL, NIP oraz REGON. Nie jest to coś wysublimowanego - zwykła tablica zabronionych numerów. Wykorzystywana jest statycznie:
Po takim zabiegu walidator, któremu zlecimy sprawdzenie numeru i znajdzie ten numer na liście - oznaczy walidację jako niepoprawną z odpowiednim komunikatem błędu.
Mechanizm obsługi błędów uległ niewielkiej przeróbce. Dodatkowo logowane są teraz (oprócz komunikatu błędu) kod błędu i walidowany numer. Nowe metody takie jak getFirstErrorCode(), getLastErrorCode(), czy reset() powinny uprzyjemnić pracę z pakietem.
Życzę miłego wdrażania i dziękuję za dotychczas wyrażone opinie (nowe mile widziane) :)
Ciężko jest pilnować wszystkich wyjątków, które rzucają na kolana walidatory. Niech za przykład posłuży REGON 000000000, który przejdzie walidację, bo jak wiadomo mnożenie przez zero zawsze daje zero, a cała magia cyfr i sum kontrolnych w tym pakiecie opiera się na mnożeniu. Ciąg 000001100 również jest poprawnym REGONEM, 0120000 - też. Takich ciągów, które mogą zniweczyć nasze starania jest jeszcze dużo - tyle, że właściwie nie da się tego uwzględnić w bibliotece. Musimy zakładać dobrą wolę użytkownika, i wierzyć, że wklepany do formularza REGON nie jest jednym z tych, które można wygenerować. Jeśli nie ufamy - pozostaje czarna lista.
Taką funkcjonalność dodałem do walidatorów PESEL, NIP oraz REGON. Nie jest to coś wysublimowanego - zwykła tablica zabronionych numerów. Wykorzystywana jest statycznie:
1234 |
<?php
|
Po takim zabiegu walidator, któremu zlecimy sprawdzenie numeru i znajdzie ten numer na liście - oznaczy walidację jako niepoprawną z odpowiednim komunikatem błędu.
Mechanizm obsługi błędów uległ niewielkiej przeróbce. Dodatkowo logowane są teraz (oprócz komunikatu błędu) kod błędu i walidowany numer. Nowe metody takie jak getFirstErrorCode(), getLastErrorCode(), czy reset() powinny uprzyjemnić pracę z pakietem.
Życzę miłego wdrażania i dziękuję za dotychczas wyrażone opinie (nowe mile widziane) :)


Przydatna rzecz. Pierwszy wpis o Twojej potraktowałem pobieżnie. Wróciłem się pokajać, kiedy okazało się, że w najnowszym projekcie potrzebuję validować PESEL ;)
Kilka uwag (do wersji 1.1):
identificationNumberValidator.class.php, linia 221 zwraca NOTICE`a, gdy nie dodam niczego do czarnej listy (przed is_array() trzeba jeszcze rzucić isset() ;) ).
Obsługa błędów jest strasznie rozbuchana. Rozumiem, że takie jest Twoje podejście (fileUpload ma to samo ;) ), ale IMHO wystarczyłoby wyrzucać wyjątek ;)
Może uzupełnij domyślnie czarną listę o kilka podstawowych numerów PESEL/NIP/REGON?
Pozdrawiam
Wtedy PESEL'e typu 000000000 by nie przeszły.