【问题标题】:ZF2 Captcha validation always is ValidZF2 Captcha 验证始终有效
【发布时间】:2015-04-19 08:27:02
【问题描述】:

我在表单中添加了验证码
我的表单是在我的类的方法中创建的

这是方法定义

  public function generateFormAndValidate($urlcaptcha = null)
  {
        $form = new \Zend\Form\Form();
        $formInputFilter = $form->getInputFilter();
        $inputFactory = new \Zend\InputFilter\Factory();

        $dirdata = './data';

        //pass captcha image options
        $captchaImage = new CaptchaImage(  array(
                'font' => $dirdata . '/fonts/arial.ttf',
                'width' => 250,
                'height' => 100,
                'dotNoiseLevel' => 40,
                'lineNoiseLevel' => 3)
        );




        $captchaImage->setImgDir($dirdata.'/captcha');
        $captchaImage->setImgUrl($urlcaptcha);




        //add captcha element...
        $form->add(array(
            'type' => 'Zend\Form\Element\Captcha',
            'name' => 'captcha',
            'options' => array(
                'label' => 'Please verify you are human',
                'captcha' => $captchaImage,
            ),
        ));


        $formInputFilter->add ( $inputFactory->createInput ( array(
            'name' => 'captcha',
           // 'required' => 'true'

            ))
        );
  }

在控制器中:

       // ......
        $form->setData($post);

        if ($form->isValid()) {

        }
        else {

        }
        //....

我的验证码图像显示正确,验证码已发布,我检查了会话,一切正常
$form->isValid 随时返回 True,甚至我将验证码输入空或使用它返回的任何字符 True
我猜isValid 方法根本没有检查验证码。

【问题讨论】:

    标签: zend-framework zend-framework2 zend-form


    【解决方案1】:

    在您的控制器中:

    //...
    $form->setData($post);
    $form->setInputFilter($form->getInputFilter());  //You missed this line
    if ($form->isValid()) {
    // ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 2020-03-07
      • 2021-12-06
      • 2023-03-30
      相关资源
      最近更新 更多