Мне нужен класс валидатора php, который проверяет вводимые пользователем данные.
Я хочу, чтобы он мог принимать соответствующий массив полей => значений типа:
array(
"username" => "Alex",
"email_address" => "@@#3423£alex@my.mail.com"
);
и затем возвращатьмассив ошибок вроде этого:
array(
"username" => "",
"email_address" => "Invalid Email Address"
);
Но я действительно борюсь за то, КАК, черт возьми, я собираюсь это сделать!
Я прочитал бесчисленные страницы о валидаторах PHP ипрочитайте, что лучший способ сделать это с помощью шаблона стратегии.Но я не знаю, как ??
Как ... Это то, что у меня так далеко:
class Validator {
private
$_errors,
$_fields,
static private $_map = array (
"firstname" => "name",
"surname" => "name",
"agency_name" => "name",
"agency_office" => "name",
"username" => "username",
"email_address" => "email_address",
);
public function __construct( array $fields ) {
$this->_fields = $fields;
}
public function validate() {
foreach ( $this->_fields as $field => $value ) {
if ( method_exists( __CLASS__, self::$_map[$field] ) ) {
if ( in_array( $field, self::$_map ) ) {
$this->{self::$_map[$field]}( $field, $value );
}
}
else {
die( " Unable to validate field $field" );
}
}
}
public function get_errors() {
return $this->_errors;
}
private function name( $field, $value ) {
if ( !preg_match( "/^[a-zA-Z]{2,50}$/", $value ) ) {
$this->errors[$field] = "Invalid. Must be 2 to 50 alphanumerical characters";
}
}
private function username( $field, $value ) {
if ( !preg_match( "/^[a-zA-Z0-9_\-]{10,50}$/", $value ) ) {
$this->errors[$field] = "Invalid. Must be 10 to 50 characters. Can contain digits, characters, _ (underscore) and - (hyphen)";
}
}
private function password( $field, $value ) {
if ( !preg_match( "/^[a-zA-Z0-9\.\-]{8,30}$/", $value ) ) {
$this->_errors[$field] = "Invalid. Must be 8 to 30 characters. Can contain digits, characters, . (full stop) and - (hyphen)";
}
}
private function email_address( $field, $value ) {
if ( !filter_var( $value, FILTER_VALIDATE_EMAIL ) ) {
$this->_errors[$field] = "Invalid Email Address";
}
}
}
Проблемы с этим, он даже не рассматривает соединения с базой данныхнапример, уже зарегистрированные имена пользователей,
Кроме того, пароли не совпадают
Я только что получил блок кодировщиков, и он разрушает меня изнутри: (
Кто-нибудь может дать объяснение необходимых классов и функций, которые должен выполнять каждый класс?
Мне действительно нужны входные и выходные данные в формате, который уже объяснен!
Спасибо, оченьМного интернет-людей!