🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#13894
Author: Bogusław Faja
Date: Fri, 24 Feb 2006 11:16
48 lines
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