Witam, oto moja pierwsza klasa ktora zrobilem dla mojego malego projektu postanowilem go udostepnic aby dowiedziec sie co mam tutaj poprawic, oraz czekam na jakies rady, w OOP siedze od kolo 4/5 tygodni. Dzieki.
ValidationInput.php
<?php /** * By Artur Kupczak, This class can be used in every project, please don't remove this line. */ class ValidationInput{ http://www.php.net/static $instance = null; //------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Looping inside of parameters given in the form, and then passing data to class validateRequest // // @param array $validation Value passed from requested validation public function validateInput($validation = http://www.php.net/array()){ foreach($validation as $field => $requests){ foreach($requests as $validationName => $validationInfo) { $this->validateRequest($validationName,$validationInfo,$field); } } } //------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Looping inside of parameters given in the form // // @param string $validationName // @param string $validationInfo // @param string $field // // Case possible options: // require booleon - If booleon true has been given then field is required otherwise the error will be displayed // preg_match String (Choice between)- // Alphabetic - Allow Numbers and Letters // Numeric - Allow Numbers Only // Letters - Allow letters Only // // minLength Numbers - The minimum length of the field // maxLength Numbers - The maximum length of the field // matchWith String - String given is a name of field that the field need to compare, For example password/passwordRepeat // filter_validate String (Choice between)- // Email - Compare field with email and return error if it's not a email // // private function validateRequest($validationName, $validationInfo, $field) { switch ($validationName) { case 'require': $validationInfo == true && http://www.php.net/empty(Input::get($field)) ? ErrorHandler::getInstance()->addError("Field " . $field . " can't be empty") : false; break; case 'preg_match': switch($validationInfo){ case 'alphabetic': !http://www.php.net/empty(Input::get($field)) && http://www.php.net/preg_match("/[^A-z0-9]/", Input::get($field)) == 1 ? ErrorHandler::getInstance()->addError("Field " . $field . " contains prohibited characters") : false; break; case 'numeric': !http://www.php.net/empty(Input::get($field)) && http://www.php.net/preg_match("/[^0-9]/", Input::get($field)) == 1 ? ErrorHandler::getInstance()->addError("Field " . $field . " can contains numbers only") : false; break; case 'letters': !http://www.php.net/empty(Input::get($field)) && http://www.php.net/preg_match("/[^A-z]/", Input::get($field)) == 1 ? ErrorHandler::getInstance()->addError("Field " . $field . " can contains letters only") : false; break; } break; case 'minLength': !http://www.php.net/empty(Input::get($field)) && http://www.php.net/strlen(Input::get($field)) < $validationInfo && http://www.php.net/strlen(Input::get($field)) >= 1 ? ErrorHandler::getInstance()->addError("" . $field . " field need to be minimum " . $validationInfo . " characters") : false; break; case 'maxLength': !http://www.php.net/empty(Input::get($field)) && http://www.php.net/strlen(Input::get($field)) > $validationInfo ? ErrorHandler::getInstance()->addError("This field is longer then " . $validationInfo . " characters") : false; break; case "matchWith": Input::get($field) != Input::get($validationInfo) ? ErrorHandler::getInstance()->addError($field . " field doesn't match " . $validationInfo . " field") : false; break; case "filter_validate"; switch ($validationInfo) { case "email": !http://www.php.net/empty(Input::get($field)) && !filter_var(Input::get($field), FILTER_VALIDATE_EMAIL) ? ErrorHandler::getInstance()->addError("This is not a valid E-mail") : false; break; } break; } } public http://www.php.net/static function getInstance() { if(self::$instance === null) { self::$instance = new self(); } return self::$instance; } }
class Input { public http://www.php.net/static function get($item) { if (http://www.php.net/isset($_POST[$item])) { return escape($_POST[$item]); } if (http://www.php.net/isset($_GET[$item])) { return escape($_GET[$item]); } return ''; } }
class ErrorHandler { http://www.php.net/static $instance = null; public http://www.php.net/static $errorBooleon = false; public http://www.php.net/static $errors = http://www.php.net/array(); public function addError($newError) { self::$errorBooleon = true; self::$errors[] = $newError; } public http://www.php.net/static function checkIfErrors() { return self::$errorBooleon; } public http://www.php.net/static function returnErrors() { return self::$errors; } public http://www.php.net/static function getInstance() { if (self::$instance === null) { self::$instance = new self(); } return self::$instance; } }
if(Input::get("register") ){ ValidationInput::getInstance()->validateInput( $require = http://www.php.net/array( "username" => http://www.php.net/array( //username to name inputu 'require' => true, 'minLength' => 3, 'maxLength' => 15 ) ) ) if(ErrorHandler::checkIfErrors() == false ){ http://www.php.net/echo 'success'; } if (ErrorHandler::checkIfErrors()) { foreach (ErrorHandler::returnErrors() as $error) { http://www.php.net/echo $error . '</Br>'; ErrorHandler::$errorBooleon = false; } }
<http://december.com/html/4/element/form.html method="post"> <http://december.com/html/4/element/input.html type="text" name="username"/> <http://december.com/html/4/element/input.html type="submit" name="register"/> </http://december.com/html/4/element/form.html>
Wyobraź sobie, ze masz pole "Ilosc dzieci". Dajesz to pole jako required - trzeba je uzupelnic. I ktos nie ma dzieci.... i zonk, nie uzupelni Twojego forma, albo bedzie musiał skłamać i wpisać 1
Pole required sprawdzasz tak:
empty(Input::get($field))
No iteraz dajesz pole, ktore jest wymagane, znaczy ze trzeba cos wpisac, ale w to pole mozna wpisac 0 - to jest poprawna wartosc akurat dla tego pola. A Twoj walidator odrzuci to i nie przyjmie tego pola, gdyz empty(0) daje true, tak samo jak empty od pustego pola.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)