我在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)) {
任何有关如何正确验证它的解决方案都会有很大的帮助。
由于 尼扎姆
答案 0 :(得分:0)
我猜你在$captcha->generate();
检查之前也在做isPost()
。这样做的问题是,当您提交表单时,您在检查POST数据之前会生成一个新的CAPTCHA,因此检查将始终失败,因为它正在针对新的CAPTCHA进行验证。解决方案只是将生成调用进一步向下移动。
我在一段时间内发布了一篇博客文章,其中包含了此组件的一些代码示例,请参阅此处 - http://tfountain.co.uk/blog/2009/1/6/zend-captcha-image-experiences,但此帖已有几年历史,因此有些内容可能已发生变化。
如果这没有帮助,请编辑您的问题以包含更多代码,以便我们可以看到可能导致问题的原因。
答案 1 :(得分:0)
查看此帖子:Zend Framework: Captcha problem
基本上你必须从元素中删除“viewhelper”。 例如:
$form->getElement('captcha')->removeDecorator("viewhelper");