Do użycia klasy potrzebne będą nam dwie tablice z danymi , pierwsza która otrzymujemy z formularza i druga w której określamy właściwości naszych wartości z formularza . Ja w przykładzie posłużę się tymi dwoma
<?php class form_validator{ private $form; private $boundaries; public function load_form($form){ $this->form = $form; } public function boundaries($boundaries){ $this->boundaries = $boundaries; } public function validate(){ foreach($this->boundaries as $k => $v){ foreach($v as $key=>$value){ switch($key){ case 'length': $this->errors[$k][$key]=true; } break; case 'allowed_characters': $value = str_replace(array('\\','[',']','^','$','.','|','?','*','+','(',')'),array('\\\\','\[','\]','\^','\$','\.','\|','\?','\*','\+','\(','\)'),$value); $this->errors[$k][$key]=true; } break; case 'type': switch($value){ case 'numbers': $this->errors[$k][$key]=true; } break; case 'e-mail': if(!filter_var($this->form[$k],FILTER_VALIDATE_EMAIL)){ $this->errors[$k][$key]=true; } break; case 'ip': if(!filter_var($this->form[$k],FILTER_VALIDATE_IP)){ $this->errors[$k][$key]=true; } break; case 'ipv4': if(!filter_var($this->form[$k],FILTER_VALIDATE_IP,FILTER_FLAG_IPV4)){ $this->errors[$k][$key]=true; } break; case 'ipv6': if(!filter_var($this->form[$k],FILTER_VALIDATE_IP,FILTER_FLAG_IPV6)){ $this->errors[$k][$key]=true; } break; } break; case 'regex': $this->errors[$k][$key]=true; } break; } } } else{ $this->errors[$k]['isset']=true; } } return true; } else{ return false; } } } ?>
Pierwsza tablica to mój sfabrykowany formularz a druga to właściwości dla niego . Oczywiście dla przykładu wprowadziłem błąd w każdym z nich
'login'=>'zdzisiek', 'haslo'=>'zdzisiek1234', 'email'=>'zdzsiek@email.com', 'test'=>'lolek'); 'login'=>array( 'length'=>'3-5', 'allowed_characters'=>'abcdefghijklmnoprstuwxy' ), 'haslo'=>array( 'length'=>'6-16' ), 'email'=>array( 'length'=>'5-40', 'type'=>'e-mail' ), 'test'=>array( 'regex'=>'^[abcdes]{1,}$' ), 'pusty'=>array( 'type'=>'ip' ) );

Kod
lenght - długość wartości , podana jako min-max czyli np "3-15"
allowed_characters - dozwolone znaki , po prostu wypisujemy znaki po kolei .
type - typ wartości , dostępne wartości to : numbers,e-mail ,ip,ipv4,ipv6
regex - tutaj podajemy wyrażenie regularne
Przykładowe użycie klasy : allowed_characters - dozwolone znaki , po prostu wypisujemy znaki po kolei .
type - typ wartości , dostępne wartości to : numbers,e-mail ,ip,ipv4,ipv6
regex - tutaj podajemy wyrażenie regularne
Jak już pisałem dwa razy jest to moja pierwsza klasa więc :
<?php // Po załadowaniu klasy i powyższych ograniczeń : $validator = new form_validator; $validator->load_form($form); $validator->boundaries($boundaries); if($validator->validate()){ //Tutaj dodajemy do bazy czy co tam chcemy , operujemy na normalnych zmiennych //Klasa zwraca true tylko w wypadku bezbłędnego formularzu } else{ foreach($validator->errors as $key=>$value){ foreach($value as $k=>$v){ switch($k){ case 'isset': break; case 'length': break; case 'allowed_characters': break; case 'type' : // można zrobić switch na $boundaries[$key][$k] dla róznych typów. break; case 'regex' : break; } } } echo str_replace(array('login','haslo','email','test'),array('nazwa użytkownika',' hasło ',' adres internetowej skrzynki pocztowej ',' komorka testowa'),ob_get_clean()); } ?>
A ) Krytykujcie
B ) Sugerujcie
C ) Doradzajcie

(Klasa nie jest żadnym arcydziełem , ba pewno znajdziecie masę błedów , ale wolałbym jakbyście nie wrzucali tego na inne fora albo używali gdziekolwiek podając za swoje dzieło ... a poza tym to róbcie z tym co chcecie
