Проверка Zend_Captcha_Image при использовании в форме - PullRequest
0 голосов
/ 06 мая 2011

У меня есть следующий код в форме в приложении Zend Framework.

$captcha = new Zend_Form_Element_Captcha('captcha', array(
                        'label' => "",  
                        'captcha' => 'image',
                        'captchaOptions' => array(  
                                'captcha' => 'image',  
                                'font'=> APPLICATION_PATH . '/../public_html/assets/fonts/akbar.ttf',
                                'imgDir'=> APPLICATION_PATH . '/../public_html/assets/captcha/',
                                'imgUrl'=> '/assets/captcha/',
                        'wordLen' => 1,
                        'fsize'=>20,
                        'height'=>60,
                        'width'=>200,
                        'gcFreq'=>50,
                        'expiration' => 300)
                        )); 

и отображение элемента формы соответствует ожидаемому.

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

    if($this->getRequest()->isPost()) {
        if($this->view->form->isValid($_POST)) {

Любое решение о том, как правильно его проверить, будет очень полезно.

Спасибо Низам

Ответы [ 2 ]

0 голосов
/ 10 января 2013

Проверьте это сообщение: Zend Framework: проблема с капчей

По сути, вы должны удалить «viewhelper» из элемента. ex.:

$form->getElement('captcha')->removeDecorator("viewhelper");
0 голосов
/ 09 мая 2011

Я собираюсь догадаться, что вы также делаете $captcha->generate(); до проверки isPost(). Проблема в том, что когда вы отправляете форму, вы генерируете новую CAPTCHA перед проверкой данных POST, поэтому проверка всегда будет неудачной, потому что она проверяется на соответствие новой CAPTCHA. Решение состоит в том, чтобы просто переместить вызов генерации вниз.

Я недавно опубликовал пост в блоге с некоторыми примерами кода этого компонента, см. Здесь - http://tfountain.co.uk/blog/2009/1/6/zend-captcha-image-experiences, но посту уже пару лет, поэтому некоторые вещи могли измениться.

Если это не поможет, отредактируйте ваш вопрос, добавив немного больше кода, чтобы мы могли увидеть, что еще может быть причиной проблемы.

...