0
이상한 문제가 있습니다. 나는 Zend를 테스트 중이며 reCaptcha 필드를 양식에 추가해야했습니다. 나는 젠드 문서에서 주어진 예제를 따라 갔다. '잘못된 captcha-sol'오류가 발생하고있었습니다.Zend - Recaptcha 이상한 문제 - 작동하지만 예상치 못한 경우
잠시 동안 주위를 읽은 후 나는 마침내 그 일을 처리 할 수있었습니다. 그러나 isValid 메서드는 예상했던 것과 반대 방향을 반환하는 것으로 보입니다.
양식 :
class Application_Form_Album extends Zend_Form {
public function init() {
## Set Recapture
$this->setName('album');
$this->setMethod('POST');
$id = new Zend_Form_Element_Hidden('id');
$id->addFilter('Int');
$artist = new Zend_Form_Element_Text('artist');
$artist->setLabel('Artist')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$title = new Zend_Form_Element_Text('title');
$title->setLabel('Title')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$submit = new Zend_Form_Element_Submit('submit');
$submit->setAttrib('id', 'submitbutton');
//Change theme
$recaptcha = new Zend_Service_ReCaptcha("XXXXXXX","XXXXXXX");
$recaptcha->setOption('theme', 'clean');
$captcha = new Zend_Form_Element_Captcha('challenge', array('captcha' => 'ReCaptcha','captchaOptions' => array('captcha' => 'ReCaptcha','service' => $recaptcha)));
$this->addElements(array($id, $artist, $title, $captcha, $submit));
}
}
그리고 컨트롤러 방법 :
public function addAction()
{
$auth = Zend_Auth::getInstance();
if ($auth->hasIdentity()) {
$form = new Application_Form_Album();
$form->submit->setLabel('Add');
$this->view->form = $form;
if ($this->getRequest()->isPost()) {
$formData = $this->getRequest()->getPost();
if ($form->isValid($formData)) {
$captcha = new Zend_Service_ReCaptcha("XXXXXXX","XXXXXXX");
$result = $captcha->verify($this->_getParam('recaptcha_challenge_field'),
$this->_getParam('recaptcha_response_field'));
if ($result->isValid()) {
//ReCaptcha validation error
#echo "CAPTCHA FAILED!<br>";
} else {
$artist = $form->getValue('artist');
$title = $form->getValue('title');
$albums = new Application_Model_DbTable_Albums();
$albums->addAlbum($artist, $title);
$this->_helper->redirector('index');
}
} else {
$form->populate($formData);
}
}
} else {
$this->_helper->redirector('index','auth');
}
}
내가 가정했을
($에서 그 결과> isValid (여기
코드입니다))를 입력하여 올바른 captcha가 입력되면 TRUE를 반환합니다. 머리카락을 당긴 후 captcha가 성공적으로 입력되면 $ result-> isValid()가 FALSE를 반환하고 단어 나 단어가 잘못 입력되면 TRUE가 반환됩니다.이 나는 뭔가를 놓치고 있습니까? 왜 이것이 일어날 수 있는지 아는 사람이 있습니까?