zend_captcha hep isValid başarısız ()

2 Cevap php

Ben sayfa gönderilen ve CAPTCHA en isValid() yöntemi denir edilirken Zend_Captcha hep yanlış dönen ile bir sorunu var. Bu kadarıyla ilgili olduğum gibi çalışması gerektiğini, çünkü bu benim deli ediyor.

I kontrolörün hareket fonksiyonunun en üstünde bu ilan başlamak

$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);

Ben her zamanki form doğrulama yapmak ve değer her zaman false döndürür CAPTCHA için forma girdiğini doğrulamak için geldiğinde tüm eserler, ancak öyle olduğunu.

//next we check the captcha text to ensure that the form is a person not a script    
$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' => 'Bad security code'));     
 $formFailed = true;
}

Ben alıyorum ve benim formunda gizli bir unsur olarak saklamak ediyorum kimliği ne olursa olsun ben bu hep başarısız ne üretilir, ancak ediliyor resmi maç emin olmak için kontrol ettik.

Burada basit bir şey eksik muyum? Ya da bu ile ilgili daha iyi bir yolu var mı?

Teşekkürler,

2 Cevap

Belki oturum değerleri düzgün saklanmaz - Bu oturumları ile ilgili bir şey olabilir. Eğer ne var Giriş $_SESSION - gibi bir şey olmalıdır:

  ["__ZF"]=>
   array(1) {
   ["Zend_Form_Captcha_ef828f68e467db99e8f358244ad6c667"]=>
     array(2) {
        ["ENNH"]=>
        int(1)
      ["ENT"]=>
        int(1260764250)
      }
    }
    ["Zend_Form_Captcha_ef828f68e467db99e8f358244ad6c667"]=>
    array(1) {
      ["word"]=>
      string(6) "fubara"
    }

Muhtemelen yeni kaptan dan $ captchaId almak kodunuzu unutmayın, ancak bu oturumda hala eski biri için kimliğini sahip olabilir. Kimlikleri gerçekten maç doğrulayın.

ZF Sayı izci bir hata gönderin - Eğer yapmazsan, onlar muhtemelen bazı böcek yaparsanız oturumları, iş Tamam kontrol edin.

Benim için çalışıyor

Zend_Loader::loadClass('Zend_Session_Namespace');
$sessionNamespace = new Zend_Session_Namespace('cptc');



Zend_Loader::loadClass('Zend_Captcha_Image');
$captcha = new Zend_Captcha_Image();
$captchaArray = array(
        'id' => $sessionNamespace->code,
        'input' => $filter->filter($this->_request->getParam('captcha'))     
            );
     if ($captcha->isValid($captchaArray)) {
     //your action here
     }