Here is your example how to implement Zend_Captcha_Image without using Zend_Form.
In your action method:
[php]public function indexAction()
{
//…
$captcha = new Zend_Captcha_Image();
$captcha->setImgDir(APPLICATION_PATH . ‘/../public/tmp/captcha/’);
$captcha->setImgUrl($this->view->baseUrl(‘/tmp/captcha/’));
$captcha->setFont(APPLICATION_PATH . ‘/fonts/elephant.ttf’);
$captcha->setWidth(350);
$captcha->setHeight(150);
$captcha->setWordlen(5);
$captcha->setFontSize(70);
$captcha->setLineNoiseLevel(3);
$captcha->generate();
$this->view->captcha = $captcha; // giving captcha object to the view
//…
}[/php]
In the corresponding view render the captcha and add a hidden field with the captcha id:
[php]<form>
<input id="captcha" type="text" name="captcha" />
<?php echo $this->captcha->render($this, null) ?>
<input type="hidden" name="cid" value="<?php echo $this->captcha->getId() ?>" >
</form>[/php]
Validating the input of the user after postback:
[php]// …
$capId = $_POST[‘cid’];
$capSession = new Zend_Session_Namespace(‘Zend_Form_Captcha_’.$capId);
if ($_POST[‘captcha’]==$capSession->word)
{
// input OK
}
else {
// input NOK
}
// …[/php]
Good luck!
PS: If you want to use your Zend_Captcha WITH Zend_Form, this blog post may help you: Zend_Captcha with Zend_Form
Comments 2
great, finally sth easy explained and without zend form, thx
Pingback: Zend_Captcha ohne Zend_Form | Keleo