Park Stołeczny, Emanuel Śmigło, 04.01.2012 r. o 09:13
Kącik Kodera I

Czemu?
W życiu każdego programisty przychodzi chwila, w której uderza go bezsens pisania kodu "do szuflady". Niektórzy rzucają to zajęcie w cholerę na rzecz np. studiów na kierunku europeistyka, stosunki międzynarodowe czy inne pedagogiki. Część z nich siłą rzeczy zaliczy pracę w barze szybkiej obsługi serwując frytki. Część populacji, która zagryzie zęby i polubi pławienie się w abstrakcjach może liczyć na niezapomniane doznania intelektualne, ataki szału tudzież ograniczenie życia towarzyskiego. W każdym razie to właśnie oni zwykli kupować frytki. Niektórych wypocin programistycznych nie sposób sprzedać, dlatego zdecydowałem się podzielić się paroma linijkami kodu z ogółem.

Temat na dziś
W pierwszym numerze KK weźmiemy na warsztat walidację danych. To nic innego jak sprawdzanie poprawności danych jakie nasza strona otrzymuje z zewnątrz np. w formularzach wypełnianych przez użytkowników. Jaki jest sens dokładania sobie większej ilości pracy? Z jednej strony nasza witryna prezentuje się lepiej uniemożliwiając wpisanie jp jako numeru Gadu-Gadu, z drugiej zwiększamy odporność systemu na różnego rodzaju ataki wymierzone w stabilność czy poufność przechowywanych informacji.

Wolność?
Wolności nie ma, a jako tyrani własnej piwnicy chcemy zagwarantować poprawność odbieranych danych. Z pomocą mogą nam przyjść wyrażenia regularne. Korzystamy z wszechobecnego PHP, który oferuje kilka wbudowanych funkcji do sprawdzania czy podany tekst pasuje do wzorca.

function ValidateGaduGadu($gg) {
return (preg_match("/^(1-9){1}(0-9){5,9}$/us", $gg) === 1);
}

Uwaga
Nawiasy w wyrażeniach regularnych i opisach należy zamienić na kwadratowe, aby kod działał poprawnie - ograniczenie publikacji.

Wykorzystałem preg_match do demonstracji linijki kodu, która zweryfikuje nam poprawność formatu numeru Gadu-Gadu. Po kolei:
[ul]
[li]/ - delimiter[/li]
[li]^ - początek tekstu[/li]
[li](1-9) - zbiór cyfr od 1 do 9[/li]
[li]{1} - możemy wziąć jeden element z powyższego zbioru[/li]
[li](0-9) - zbiór wszystkich cyfr[/li]
[li]{5,9} - możemy wziąć od 5 do 9 elementów z powyższego zbioru[/li]
[li]$ - koniec tekstu[/li]
[li]us - ograniczamy niebezpieczne znaki UTF (link)[/li]
[/ul]

W ten oto sposób można rozszerzyć weryfikację pól w profilu mieszkańca w systemie Sarmacji (a co Ty zrobiłeś dla bezpieczeństwa systemu?).

Prawie jak PESEL
Czy ktoś bawił się formularzem wyboru adresata przelewu? Nieładnie, na szczęście możemy przywalić kolejną prostą funkcją, która sprawdzi czy identyfikator mieszkańca jest poprawny:

function ValidateId($id) {
return (preg_match("/^A(A-Z0-9){4}$/us", $id) === 1);
}

Tym razem korzystamy z alfabetu oraz cyfr, ale nie jest to rozwiązanie problemu - należy pamiętać, że w Złotej Wolności przelewy można kierować także do instytucji. Wraz z walidacją adresu e-mail będzie to zagadnienie kolejnej publikacji. Dziurawego kodu!

Bibliografia:
- http://www.regular-expressions.info/
Dotacje
0,00 lt
Nikt jeszcze nie zasponsorował tego artykułu.
Serduszka
0,00 lt
Nikt jeszcze nie lubi tego artykułu.
Komentarze
Piotr II Grzegorz
O to musisz mnie nauczyć wyrażeń regularnych! Wytłumaczyć to zrozumiem o co chodzi.
Odpowiedz Permalink
Marek von Thorn-Chojnacki
Bardzo ciekawe:D
Odpowiedz Permalink
Krzysztof Czuguł-Chan
Ja się zazwyczaj posiłkuję tym: http://gskinner.com/RegExr/ ;)
Odpowiedz Permalink
Helwetyk Romański
Nie byłoby w przypadku GG prościej przez http://www.php.net/manual/en/filter.filters.validate.php?
Odpowiedz Permalink
Emanuel Śmigło
Przy GG byłoby prościej, z tym że preg_match działa także poniżej wersji 5.2 PHP.
Permalink
Krzysztof von Thorn-Macak
Tantiema za pomysł! Jak ktoś ma chęć to mogę podrzucić kilka gotowcół np. na validację e-mail ;)
Odpowiedz Permalink
György Róni Karakachanow Jr
Fajnie.
Permalink
Emanuel Śmigło
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567
Permalink

Musisz się zalogować, by móc dodawać komentarze.