Zend - можете ли вы использовать валидатор для проверки комбинации имени пользователя и пароля в Zend_Form? - PullRequest
1 голос
/ 22 октября 2011

Я изучил Zend Framework: Zend_Validate_Db_RecordExists и Zend_Validate_Db_NoRecordExists и заметил, что вы можете проверить столбцы в таблице базы данных, чтобы увидеть, отображается ли значение в вашей форме в названном столбце.

Я также заметил, что вы можете исключить строку на основе значения другого столбца в той же строке.

Можно ли проверить, что пароль соответствует имени пользователя, используя эти валидаторы?

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

Спасибо.

$this->addElement('text', 'handle', array( 

    'label' => 'Username:', 

    'required' => true, 

    'filters' => array('StringTrim'), 

    'validators' => array(  

        array(

            'NotEmpty', true, array('messages' => 'You must enter your username.')

        ),

        array(

                'Db_RecordExists', 

                false, 

                array (

                    'member_activation',

                    'member_username'
                    )

                )

        )           

    ));

$this->addElement('text', 'validationCode', array( 

    'label' => 'Code:', 

    'required' => true, 

    'filters' => array('StringTrim'), 

    'validators' => array(  

        array(

            'NotEmpty', true, array('messages' => 'You must enter your validation code.')

        ),

        array(

                'Db_RecordExists', 

                false, 

                array (

                    'member_activation',

                    'member_validationcode'
                    )

                )

        )           

    ));

Ответы [ 2 ]

2 голосов
/ 22 октября 2011

Не могли бы вы включить аутентификацию в Zend_Validate? Абсолютно

Стоит ли ? Ад нет.

Если вы это делаете, вы смешиваете проблемы. Материал Zend_Validate_Db_RecordExists на самом деле является чем-то вроде границы, но это удобно.

Но как только вы идете по дороге, которую вы рассматриваете, почти все становится проверкой, тогда как на самом деле это не так. Вы можете найти себе все виды вещей, такие как проверки ACL и т. Д.

Валидация должна быть почти всегда связана с форматом вещей. Добавление зависимостей от постоянства данных и системы ACL, или чего-либо еще, только увеличит сплоченность. Это усложнит тестирование, отладку или изменение вашего кода.

Используйте Zend_Validate для проверки. Убедитесь, что строки не слишком длинные. Убедитесь, что эти цифры> = 0. Убедитесь, что номер телефона в США имеет десять цифр.

Но если вам нужно выполнить более глубокие проверки, которые углубляются в ваш уровень персистентности и связаны с вашей бизнес-логикой, вам лучше сделать это где-то далеко от простой проверки формы.

0 голосов
/ 02 января 2012

Если вы добавите проверку в Zend_Form, вы сделаете ее зависимой от вашей базовой платформы, что (с точки зрения доменного управления) не очень хорошая вещь, поскольку вы связываете часть своей логики домена с внешним ресурсом.вашего заявления.

...