1

我的帖子数据来自验证码适配器,如下所示:

  ["ffck"] => array(2) {
    ["id"] => string(32) "661db3996f5e60e71a60671496ec71a9"
    ["input"] => string(3) "dys"
  }

我的代码现在正在尝试验证,但总是失败:

  Zend_Loader::loadClass('Zend_Captcha_Image');      
  $captcha = new Zend_Captcha_Image();
  $captchaArray = array(
    'id' => $post['ffck']['id'], // valid id
    'input' =>     $post['ffck']['input'] // valid input
  );

  if ($captcha->isValid($captchaArray)) {  // FAILs!!!!
    echo "working";
  } else {
    echo "fails";
  }
  Zend_Debug::dump($post) ; // 100% valid ....

  exit;

如何解决?或者是什么导致这个失败?

4

2 回答 2

1

检查生成的 html,你应该只有两个输入:name="captcha[id]" 和 name="captcha[input]",如果你有第三个 name="captcha",那么你必须删除 viewhelper在渲染之前来自验证码元素。

前任。:

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

您传递给 CAPTCHA 对象的数组应该只包含两个键,所以请尝试:

$captchaArray = $post['ffck']

而不是你目前正在做的事情。

但是您发布的代码无论如何都无效,因为您从未生成验证码图像。我想您已经减少了代码示例以保持问题简短,因此如果上述修复不起作用,请编辑您的示例以包括生成验证码图像的方式和位置。

于 2012-05-15T12:44:33.613 回答