Пакет проверки данных для PHP? - PullRequest
5 голосов
/ 13 июня 2011

Тупой вопрос.

У меня есть проект, над которым я работаю на PHP; это форма регистрации для клиента, которая в конечном итоге будет писать в базу данных MySQL. У меня есть форма для проверки данных для соответствующих полей, и я уже использую некоторые встроенные в PHP функции фильтрации .

Однако у меня есть довольно много полей, которые мне нужно проверить для разных целей - например, у меня есть адреса электронной почты и веб-адреса для проверки (которые описаны в пакете фильтра), но я также необходимо проверить номера телефонов, почтовые индексы, адреса и имена (которые должны соответствовать только определенному набору символов).

Сейчас мое решение состоит из множества операторов if-then для проверки поля. Например, для почтового индекса я проверяю, является ли он числовым, с помощью ctype_digit, а затем использую strlen для проверки длины. (Я мог бы инкапсулировать все внутри объекта - и я, вероятно, сделаю это, как только у меня все заработает, как на самом деле должно, - но это еще далеко.) Кто-нибудь знает о стороннем классе, который будет делать такие вещи, как этот? ? Или, если нет, по крайней мере, способ проверки определенных типов ввода без обращения к операторам if, основанным на имени ввода. так как это действительно не масштабируется?

Если мне нужно отредактировать этот вопрос или добавить что-нибудь, дайте мне знать. Спасибо.

Ответы [ 3 ]

2 голосов
/ 13 июня 2011

Выезд FILTER_VALIDATE_REGEXP.Это позволяет вам делать свои собственные проверки.

$filter_zip_options = array( "options" => array( "regexp" => "/^[0-9]{5}$/" ) );
var_dump( (bool)filter_var( "99999", FILTER_VALIDATE_REGEXP, $filter_zip_options ) ); //bool(true)
var_dump( (bool)filter_var( "991999", FILTER_VALIDATE_REGEXP, $filter_zip_options ) ); //bool(false)

Если вы ненавидите регулярное выражение, вы также можете использовать FILTER_CALLBACK.

//To use a closure as an in place callback you need PHP 5.3
var_dump( filter_var( "Kendall", FILTER_CALLBACK, array( "options" => function( $input ) {
    //check if it's 1 or 2 words
    if( count( explode( " ", $input ) ) > 2 )
        return FALSE;

    return "Hello world $input";
} ) ) );
1 голос
/ 13 июня 2011

Эта ссылка может помочь вам, она содержит наиболее распространенные регулярные выражения, которые можно использовать для проверки ввода пользователя.Не стоит проверять поля на стороне клиента (javascript), никогда не следует доверять своим пользователям.

0 голосов
/ 13 июня 2011

Я даю вам подсказку .. в php .. не используйте программирование ООП .. если вы используете базу данных (и вы вынуждены), просто инкапсулируйте ваши данные в массив или что-то в этом роде.

Во-вторых, для проверки.Вы можете использовать регулярное выражение для подтверждения своих полей.Однако, если вы знаете javascript, используйте для него немного alert().

Удачи: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...