0

我在 zend 框架应用程序的表单中有以下代码。

$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)) {

任何关于如何正确验证它的解决方案都会有很大帮助。

谢谢尼扎姆

4

2 回答 2

0

我猜你在检查$captcha->generate();前也在做isPost()。这样做的问题是,当您提交表单时,您会在检查 POST 数据之前生成一个新的 CAPTCHA,因此检查将始终失败,因为它正在根据新的 CAPTCHA 验证它。解决方案只是将生成调用进一步向下移动。

我不久前发表了一篇博客文章,其中包含该组件的一些代码示例,请参见此处 - http://tfountain.co.uk/blog/2009/1/6/zend-captcha-image-experiences但这篇文章是现在几岁了,所以有些事情可能已经改变了。

如果这没有帮助,请编辑您的问题以包含更多代码,以便我们查看可能导致问题的其他原因。

于 2011-05-09T12:23:10.400 回答
0

检查这篇文章:Zend 框架:验证码问题

基本上你必须从元素中删除“viewhelper”。前任。:

$form->getElement('captcha')->removeDecorator("viewhelper");
于 2013-01-10T15:30:09.843 回答