Класс для проверки входных данных предназначем для проверки произвольных данных на соответствие зпданным условиям. Он может использоваться для проверки форм как дополнительный инструмент (фаза проверки на стороне сервера).
При этом я заранее предполагаю, что "полноценная проверка" будет проводится на стороне клиента.
check/test_check - Нахождение файла настроек (config/check/test_check.php)
en - локаль (для проверки дат и других региональных данных)
true - проверять ли все входные данные. Если проверяются не все данные (значение false) - ф-я check() возвращает значение true или false. Если проверяеются все данные - ф-я check() за место false возвращает массив значений "array(field => return_value, ...)".
Проверка осуществляется ф-ей check():
$res = $check->check($input_data);
$input_data - входные данные
- Проверка на пустое значение
function is_equal($value, $eq_value)
- Проверка на равенство значению
function is_array($value)
- Является ли массивом
function is_float($value)
- Является ли числом дробным
function is_int($value)
- Является ли числом целым
function is_num($value)
- Является ли числом
function value_between($value, $min, $max)
- Значение в границах диапазона
function value_less($value, $max)
- Значение меньше чем
function length_greater($value, $min)
- Значение больше чем
function is_url($value)
- Является ли URL
function is_email($value)
- Является ли EMAIL
function is_date($value)
- Является датой ли (используются региональные настройки)
function is_time($value)
- Является ли временем (используются региональные настройки)
function is_datetime($value)
- Является ли датовременем (используются региональные настройки)
$form = array(
'email' => array('not_empty', '', 'email is emty'),
'email_' => array('is_email', '', 'email is not email'),
'pass' => array('not_empty', '', 'password is emty'),
'pass_' => array('length_greater', 4, 'password must be greater than 4 characters'),
'pass_confirm' => array('is_equal', '@@pass', 'Passwords does not match'),
'phone' => array('not_empty', '', 'phone is emty'),
'phone_' => array('length_greater', 4, 'phone must be greater than 4 characters'),
'firstname' => array('not_empty', '', 'firstname is emty'),
'firstname_' => array('length_greater', 4, 'firstname must be greater than 4 characters'),
'secondname' => array('not_empty', '', 'secondname is emty'),
'secondname_' => array('length_greater', 4, 'secondname must be greater than 4 characters'),
'bdate' => array('not_empty', '', 'Birthdate is emty'),
'bdate_' => array('is_date', '', 'Birthdate is not date'),
'address' => array('not_empty', '', 'address is emty'),
'address_' => array('length_greater', 9, 'address must be greater than 9 characters')
);
?>
Пример:
if(count($_POST) > 0) {
$check = new check('check/test_check, 'en', true);
$function = function($custom) { return( $custom == 'qwerty' ); };
$check->add_rule('custom', $function, "Value must be equal 'qwerty'");
$res = $check->check($_POST);
if($res === true) {
print "Check OK";
}
else {
print print_r($res);
}
}
При этом я заранее предполагаю, что "полноценная проверка" будет проводится на стороне клиента.
Создание класса
$check = new check('check/test_check', 'en', true);check/test_check - Нахождение файла настроек (config/check/test_check.php)
en - локаль (для проверки дат и других региональных данных)
true - проверять ли все входные данные. Если проверяются не все данные (значение false) - ф-я check() возвращает значение true или false. Если проверяеются все данные - ф-я check() за место false возвращает массив значений "array(field => return_value, ...)".
Проверка осуществляется ф-ей check():
$res = $check->check($input_data);
$input_data - входные данные
Стандартные ф-и проверки
function not_empty($value)- Проверка на пустое значение
function is_equal($value, $eq_value)
- Проверка на равенство значению
function is_array($value)
- Является ли массивом
function is_float($value)
- Является ли числом дробным
function is_int($value)
- Является ли числом целым
function is_num($value)
- Является ли числом
function value_between($value, $min, $max)
- Значение в границах диапазона
function value_less($value, $max)
- Значение меньше чем
function length_greater($value, $min)
- Значение больше чем
function is_url($value)
- Является ли URL
function is_email($value)
- Является ли EMAIL
function is_date($value)
- Является датой ли (используются региональные настройки)
function is_time($value)
- Является ли временем (используются региональные настройки)
function is_datetime($value)
- Является ли датовременем (используются региональные настройки)
Дополнительные проверки
Дополнительное поле добавляется ф-ей add_rule
add_rule('название поля', $lambda_function, "Сообщение при ошибке'");
Файл настроек
Файл настроек класса check является стандартным файлом настроек, значения индексов являются массивом из трёх элементов:
1)Название ф-и проверки
2)Дополнительный параметр (если д.п. является другое поле, тогда оно обозначается следующим образом: '@@название_поля'). Параметр опциональный.
3)Возвращаемое значение при ошибке. Если не указано - возвращается false. Параметр опциональный.
* Названия полей могут иметь префиксы (_) в начале и конце (чтобы можно было повесить несколько проверок на одно поле)
Пример файла настроек:
<?php$form = array(
'email' => array('not_empty', '', 'email is emty'),
'email_' => array('is_email', '', 'email is not email'),
'pass' => array('not_empty', '', 'password is emty'),
'pass_' => array('length_greater', 4, 'password must be greater than 4 characters'),
'pass_confirm' => array('is_equal', '@@pass', 'Passwords does not match'),
'phone' => array('not_empty', '', 'phone is emty'),
'phone_' => array('length_greater', 4, 'phone must be greater than 4 characters'),
'firstname' => array('not_empty', '', 'firstname is emty'),
'firstname_' => array('length_greater', 4, 'firstname must be greater than 4 characters'),
'secondname' => array('not_empty', '', 'secondname is emty'),
'secondname_' => array('length_greater', 4, 'secondname must be greater than 4 characters'),
'bdate' => array('not_empty', '', 'Birthdate is emty'),
'bdate_' => array('is_date', '', 'Birthdate is not date'),
'address' => array('not_empty', '', 'address is emty'),
'address_' => array('length_greater', 9, 'address must be greater than 9 characters')
);
?>
Пример:
if(count($_POST) > 0) {
$check = new check('check/test_check, 'en', true);
$function = function($custom) { return( $custom == 'qwerty' ); };
$check->add_rule('custom', $function, "Value must be equal 'qwerty'");
$res = $check->check($_POST);
if($res === true) {
print "Check OK";
}
else {
print print_r($res);
}
}
Комментариев нет:
Отправить комментарий