Zaznaczam, iż takowej nie poszukuję.
Hej,
Chciałbym stworzyć prostą biblioteczkę, która będzie walidowała dane z logowania/rejestracji, chroniła przed sql injection, xss injection, shell injection, i innych.
Chciałbym ją stworzyć tak, aby dało się ją podpiąć do jakiejkolwiek aplikacji.
Niestety, im dalej w las, tym gorzej.
Największy problem jest z stworzeniem klasy, która będzie walidowała dane.
Dajmy na to:
Mamy formularz rejestracji, a w nim:
- Login
- Email
- Hasło
- Powtórzenie hasła
Dane wysyłam metodą POST, w kontrolerze sprawdzam czy zostały one wysłane, i opakowuję je w metodę, dajmy na to: valAll(); - Do niej możemy wsadzić kolejno:
$foo->valAll($_POST['login'], $_POST['email'], $_POST['password'], $_POST['re_password'])
Lub cokolwiek.
Nastaje problem... Skąd dana metoda będzie wiedziała co i jak walidować? Aby dla email sprawdzała czy jest poprawny, nie zawiera [ ] ' - ; i innych nieprawidłowych znaków, dla hasła czy ma przynajmniej 6 liter, dla loginu czy ma przynajmniej 3 litery, i nie ma w nim również znaków specjalnych?
Jesteśmy w ogóle stanie zrobić metodę valAll(); czy każde dane będziemy musieli walidować inną metodą? valEmail(), valPassword(), valLogin(), valSqlInjection(), lub inne.
Jak sprawić, aby biblioteka była dostępna dla każdej aplikacji, która chciałby walidować swoje dane, aby użytkownik nie musiał grzebać w kodzie źródłowym, a po prostu włożyć to, co ma być walidowane, do metody?
Zaznaczam iż całość jest dla nauki, a nie tworzenia biblioteki z prawdziewgo zdarzenia, które będzie chronić dane przed wszelkimi możliwymi atakmi.
Streszczając:
- Jak stworzyć bibliotekę, którą będzie można dołączyc do jakiegokolwiek projektu, napisanego obiektywnie?
- Czy możliwe jest stworzenie metody, dajmy na to: valAll();, która wiedziałby co z daną rzeczą zrobić, po włożeniu do niej danych takich jak: vallAll($_POST['login'], $_POST['email'], $_POST['haslo]); czy jest to niemożliwe, i należałoby do wszystkiego tworzyć osobną metodę?
- Jak wyglądałaby przykładowa struktura katalogów?
- Co będzie mi wymagane?