Zend framework 在表单中使用时验证Zend_验证码图像
我在zend framework应用程序中有以下代码Zend framework 在表单中使用时验证Zend_验证码图像,zend-framework,zend-form,captcha,zend-validate,Zend Framework,Zend Form,Captcha,Zend Validate,我在zend framework应用程序中有以下代码 $captcha = new Zend_Form_Element_Captcha('captcha', array( 'label' => "", 'captcha' => 'image', 'captchaOptions' => array(
$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)) {
任何关于如何正确验证它的解决方案都将大有裨益
谢谢
尼扎姆我猜你也在做
$captcha->generate()检查isPost()之前的code>。问题是,当您提交表单时,您在检查POST数据之前生成了一个新的CAPTCHA,因此检查总是会失败,因为它是根据新的CAPTCHA进行验证的。解决方案只是将generate调用进一步向下移动
不久前,我在博客上发布了一篇关于这个组件的一些代码示例,请看这里——但是这篇文章已经有几年的历史了,所以有些事情可能已经改变了
如果这没有帮助,请编辑您的问题以包含更多的代码,以便我们可以查看可能导致问题的其他原因。查看此帖子:
基本上,您必须从元素中删除“viewhelper”。
例:
如果删除captcha元素,一切正常吗?是的,只有captcha验证总是失败。我发现,当发出表单请求时,会生成新的验证码。但我无法理解如何在之前验证它,并且在表单中重新验证。
$form->getElement('captcha')->removeDecorator("viewhelper");