Thread View: pl.comp.objects
1 messages
1 total messages
Started by Bogusław Faja
Fri, 24 Feb 2006 11:16
Walidacja danych wejściowych
Author: Bogusław Faja
Date: Fri, 24 Feb 2006 11:16
Date: Fri, 24 Feb 2006 11:16
48 lines
2603 bytes
2603 bytes
Witam!
Podstawowe informacje:
są dane wejściowe ($_GET, $_POST), muszą one spełniać pewne warunki (np. id
tylko liczbą dodatnią). Jak _obiektowo_ obsłużyć sprawdzanie tych danych,
aby możliwe było wykonanie testów tylko na początku skryptu, a nie przy
każdym odwołaniu..
Chciałbym wykonać to na wzór klasy:
klasa: cDataCleaner
funkcje:
setSource(&$var); - ustawia zrodlo danych - poprzez referencje
addRule($name, $rule); - ustawia regule dla pozycji zrodla
addCheckingFunction($name, $func) - ustawia funkcje, ktora sprawdza, czy
dane pole jest poprawne.. $func jest parametrem takim samym jak dla
call_user_func, musi zwraca true/false.
getValue($name) - pobiera sprawdzone dane lub wartosc domyslna w przypadku
okreslenia
setDefaultValue($name, $value); - ustawia domyslna wartosc dla danego
klucza
setDefaultRule($rule) - ustala domyslna regule do sprawdzania pola
Problem?
Tablice. Jak ustalać im reguły?
Jeśli ustalę te reguły na początku skryptu, to jak mam obsłużyć
sprawdzanie, jeśli okaże się, że mam w różnych 'modułach' dane zewnętrzne o
tych samych nazwach (np. id), i różnych warunkach, którym trzeba je poddać.
Jak rozróżniać pola? Nadawanie różnych nazw odpada.. (w przypadku gdy nazwy
są jednakowe przenoszę te same elementy do klasy nadrzędnej i tworzę dość
sensowne funkcje działające na wszystkim).
Jakieś rozwiązania? Linki? Pomysły?
Szukałem w google, ale wyniki są raczej mizerne.. zazwyczaj:
if (!valid())
{
redirect();
}
Byłoby to w porządku, gdyby nie fakt, że mi potrzebne jest definiowanie
_defaultowego_ elementu. Także sprawa elementów o tych samych nazwach a
różnych znaczeniach..
Z góry dzięki za pomoc.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads