🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #13894

Walidacja danych wejściowych

#13894
From: 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.
Technical Details
Message-ID: <cvaegy8htlxg.1mf6zroek7o89.dlg@40tude.net>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: Bogusław Faja <zymen@zymen.net>
Newsgroups: pl.comp.objects
Subject: Walidacja danych wejściowych
Date: Fri, 24 Feb 2006 12:16:42 +0100
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 48
Message-ID: <cvaegy8htlxg.1mf6zroek7o89.dlg@40tude.net>
NNTP-Posting-Host: kronos.zapis.net.pl
Mime-Version: 1.0
X-Trace: inews.gazeta.pl 1140779803 8890 195.205.170.10 (24 Feb 2006 11:16:43 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Fri, 24 Feb 2006 11:16:43 +0000 (UTC)
X-User: zymenus
X-Antivirus: avast! (VPS 0608-1, 2006-02-23), Outbound message
X-Antivirus-Status: Clean
User-Agent: 40tude_Dialog/2.0.15.1pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit