Ich habe ein Problem mit Zend_Captcha
, das immer false zurückgibt, wenn die Seite übermittelt wird und die isValid()
-Methode des Captchas aufgerufen wird. Es macht mich verrückt, denn meiner Meinung nach sollte das funktionieren.
Ich fange damit an, dies oben in der Aktionsfunktion des Controllers zu deklarieren
$captcha = new Zend_Captcha_Image('captcha',
array(
'captcha' => array(
'name' => 'graduatesignupcaptcha',
'wordlen' => 6,
'font' => $this->config->captcha->font,
'imgDir' => $baseUrl.'/images/captcha/',
'imgUrl' => $this->config->webserver->name.'/images/captcha/',
)
)
);
$captcha->setHeight(80)
->setTimeout(300);
Ich mache die übliche Formvalidierung und das funktioniert alles, aber wenn es darum geht, den eingegebenen Wert in das Captcha-Formular zu validieren, gibt es immer false zurück.
//als nächstes überprüfen wir den Captchatext, um sicherzustellen, dass es sich bei dem Formular um eine Person und nicht um ein Skript handelt
$captchaText = $form->getElement('captchainput')->getValue();
$captchaId = $form->getElement('captchaid')->getValue();
//$captchaSession = new Zend_Session_Namespace('Zend_Form_Captcha_'.$captchaId);
$captchaArray = array(
'id' => $captchaId,
'input' => $captchaText
);
if(!$captcha->isValid($captchaArray)){
$log->log(implode(",",$captcha->getErrors()), Zend_Log::DEBUG);
$form->getElement('captchainput')->setErrors(array('messages' => 'Ungültiger Sicherheitscode'));
$formFailed = true;
}
Ich habe überprüft, ob die ID, die ich bekomme und als verstecktes Element in meinem Formular speichere, mit dem generierten Bild übereinstimmt, aber egal was ich tue, es schlägt immer fehl.
Fehlt mir hier etwas Einfaches?? Oder gibt es eine bessere Möglichkeit, damit umzugehen??
Vielen Dank,